指针数组与数组指针从名称来看比较容易混淆,其实比较容易区分。这就是我们汉语语言的魅力。数组和指针是两个名字,组合形成一个名字是。后面的名词是本质,前面的名词是定语。修饰后者。按照这个语言规律我们来分析一下这两个名词。
“指针数组”首先是一个数组,指针其实说的数数组元素的类型。也就是每个元素都是指针的数组。
“数组指针”,其实是"指向数组的指针“简称。也就是一个指向一个数组的指针。在32位系统占四个字节。数组有数组的约束。占多少字节由数组声明确定。这也是C的自由特点的表现。
一般在C语言中语句是向右优先结合的。我们来分析一下下面两条语句。
int *p1[10] ;
int (*p2)[10];
如果我们知道”右优先“原则,就能轻易的分析出上面两条语句的含义。
int *p1[10] 其实是两层含义, 首先是p1[10 ],然后是*。p1[10] 是10个元素数组。*是指针。也就是10个指针元素的数组。指针指向的类型是整型。
int (*p2)[10] 也是两层含义,( )优先级高,所以首先是一个指针,[10]是个元素的数组,p2指向一个包括了10整数元素的指针。
这个理解起来比较绕口。但是使用几次以后就比较明了了。在一般做单片程序时,也不太涉及这些东西。了解一下就可以了!
关于指针我基本上只能写这么多了。希望对网友有一点点帮助!!!