1.a,a[0],&a,&a[0]
通过在VS上实验,以下是关于C语言中数组与指针的关系——a,a[0],&a,&a[0]之间的区别小小的总结
对于二维数组a[3][5]
a int(*)[5]类型 ——即指向的是a[0]
a[0] int *类型 ——即指向的是a[0][0]
&a int(*)[3][5]类型 ——即指向的是整个数组的首地址
&a[0] int(*)[5]类型 ——即指向的是a[0]
对于一维数组a[3]
a int *类型 ——即指向的是a[0]
a[0] int *类型 ——即指向的是a[0]
&a int(*)[3]类型 ——即指向的是整个数组的首地址
&a[0] int *类型 ——即指向的是a[0]
2.指针数组和指向数组的指针
int *p[5] 指针数组:是数组,但数组中的每个元素都是指针
int (*p)[5] 指向数组的指针:是指针,但它指向的是一个数组,相当于 int a[5]。 *p相当于a,即p=&a,则可合并为int (*p)[5]=&a。
3.指针加1
指针加1要根据指针类型加上一定的值,不同类型的指针加1之后增加的大小不同。
指针只是一个内存地址,但指针指向地址的长度可能不同。
本文不详尽或错误之处,请各位不吝言辞,多多指教~谢谢~