指针数组和数组指针

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针

数组指针:a pointer to an array,即指向数组的指针

指针数组:数组中的每一个元素存放的都是地址    例:int *a[4];

数组指针:数组中存放的是具体类型的值               例:int (*a)[4];


我们将上面的两个示例分别与int  *b做比较

1:int *a[4]        由于*的优先级低于[],因此表达式可以写成:    int *(a[4]);

我们也将int *b转换一下int *(b[1]),看起来是不是有点像int *(a[4]);只不过

int *(a[1])只能存储一个整形变量的地址,那么int *(a[4]),就是只能存储4个整形数据的地址罢了.


2:int (*a)[4]        ()的优先级和[]的一样,我们将其与int b进行比较,首先int a可以写成 int b[1];再转换一下

就是int *&a[1];再转换int (*&b)[1];我们将其与int (*a)[4]进行对比,发现了吗?&b和a的性质一样,只不过&b的步长为一个int类型,而a的步长为4个int类型的步长!

本文出自 “网络学习总结” 博客,请务必保留此出处http://8947509.blog.51cto.com/8937509/1579340

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。