所谓数组,就是相同数据类型的元素按一定顺序排列的集合。
字符串:C语言中的字符串其实就是以空字符(\0)结尾的char数组。
指针:指针也是一种数据类型,指针变量是用来存放地址值的。
1)指针的数值就是它所指向的对象的地址。
2)在指针前运用运算符*就可以得到指针所指向的对象的数值。
3)对指针加1,等价于对指针的值加上他指向的对象的字节大小。
联系:数组名同时也是该数组首元素的地址,即如果array是一个数组,则array==&array[0]为真。
对指针或数组名做加法:如果对指针+1的结果是指针指向下一个存储单元,对于数组名来说,它也会移动到下一个元素的地址。如:
如果array是数组,array + 1== &array[1] //同一个地址
*(array + 1) == array[1] //相同的值
可以看出,数组是指针的变相使用形式,可以用指针标识数组的没个元素,并得到每一个元素的数值。
指针和多维数组:
假设有如下声明:
Int zippo[4][2];
数组名同时也会是数组首元素的地址,但是zippo的首元素本身又是包含两个int 的数组,因此zippo也是包含两个int数组的指针。
因为zippo是数组首元素的地址,所以zippo的值和&zippo[0]相同。Zippo[0]本身是包含两个整数的数组,因此zippo[0]的值和&zippo[0][0]相同。因为整数和两个整数组成的数组开始与同一个地址,因此zippo和zippo[0]具有相同的数值。
指针做函数参数是指针的一个重要使用,通过指针做形参,在对函数调用时,将实参的地址传递给指针,从而达到对想要操作的数据(比如数组)进行操作。