在C中,怎样区分数组指针和指针数组,int(*p)a[10]到底是什么?

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:36:17
这两点我有点混淆,int *pa[10]又是什么,能不能多举一些例子,谢谢!
int(*a)[10]和int* a[10],我想区分它们,

很简单,你可以看看运算符优先级那里
()是一个圆括号运算符,在所有运算符中优先级最高
*是一个指针运算符
[ ]是一个下标运算符
而下标运算符的优先级高于指针运算符
再看你给的例子int(*a)[10]和int* a[10]
第一个int(*a)[10],首先当然就是进行圆括号里的运算了,也就是*a,说明a是一个指针变量,具体就是a是一个指向包含10个整型元素的一维数组的指针变量,也就是a是一个指针。
再看int* a[10],先进行[ ]运算,a与[10]结合成a[10],这是一个数组的形式,再与*结合,我们在定义指向整型变量的指针的时候,是这样定义的 int *p,我们把a[10]看成一个整体,然后就知int* a[10]是在定义一个数组,数组里的元素全部是指针,所以a[10]也就是指针数组了。

初学这里是比较容易混淆,用多了也就慢慢清楚了,多熟悉下指针这章

int (*p)a[10]; 表示p是一个指针,指向一个10个元素的int数组
int *pa[10]; 表示pa是含10个元素的数组, 每个元素为int *类型

这里有详细说明
http://zhidao.baidu.com/question/87026930.html