浅谈数组和指针
这应该不是议数据和指针,应该是阅读笔记吧!但是其这个题目更好点。 C专家编程第四章内容:令人震惊的事实:数组和指针并不相同。自己也收获不小,了解很多基础的东西,对那些初入C开发人员有很好的帮助。那废话少说吧。 我们总以为数据和指针是完全等同的,两者是可以互换的,这种说法是片面的。我们在编程中经常使用全局变量,在其他文件中声明中也可以使用这个全局变量。下面就举个例子说明:
文件1:
Int mango[100];
文件2:
Extern int *mango; /*①*/
...
/*一些使用mango的代码*/ 这里,文件1定义int 变量mango,但文件2声明它为指针int *型,这里显然是类型不匹配,也说明了数组和指针并不是完全等同的。这样使用肯定是错误的,代码不可能正常运行。那么应该怎么声明呢, 如下:Extern int mango【】;/*②*/
说明: ①语句声明mango是个int*型;②声明mango为int 型数组,长度尚未确定,其存储在别处定义。
1 那么什么是声明?什么是定义? 在C语言中对象必须有且只有一个定义,但可以有多个声明。定义是一个特殊的声明,它创建一个对象;声明只是说明了在其他地方创建了这个对象,它允许在这里使用:*******************************************************************************定义 只能出现在一个地方 确定对象的类型并分配内存,用于创建新的对象声明 可以多次出现 描述对象的类型,用于指代其他地方定义的对象******************************************************************************* 只要记住下面的内容可以分清定义和声明:声明相当于普通的声明:它说明的并非自身,而是描述其他的地方创建的对象。定义相当于特殊的声明:它为对象分配内存。 Extern 对象声明告诉编译器对象的类型和名字,对象的内存分配在别处进行。由于并未在声明中为数组分配内存,所以并不需要提供关于数组长度的信息。对于多维数组需要提供除最左边一维其他维的长度—这是给编译器足够的信息产生相应的代码。 2 、数组和指针式如何访问的 这里讲述对数组的引用和对指针的引用有何不同之处,首先需要注意的是“地址y“和“地址y的内容”之间的区别。这里一个相当微妙之处,是在大多数编程语音中我们用同一个符号来表示这两个东西,有编译器根据上下文环境来判断他的具体含义。以一个简洁的例子来说明:

网络太卡了,上传不上图片,以后再写吧!。。。