int*p[4]与int(*q)[4]的区别。
以上定义涉及两个运算符:“*”(间接引用)、“[]”(下标),“[]”的优先级别大于“*”的优先级别。
首先看int*p[4],“[]”的优先级别高,所以它首先是个大小为4的数组,即p[4];剩下的“int*”作为补充说明,即说明该数组的每一个元素为指向一个整型类型的指针。int*p[4]的存储结构如下:(存储方格横向排列或竖向排列没区别,只要按内存地址顺序排列就行,此处只是为画图方便)
再看int(*q)[4]。它首先是个指针,即*q,剩下的“int[4]”作为补充说明,即说明指针q指向一个长度为4的数组。int(*q)[4]的存储结构如下:
请看以下定义:
inta[2][4]={{2,5,6,8},{22,55,66,88}};
intc[4]={5,8,9,4};
intd[3]={23,12,443};
int*p[4],(*q)[4];
q=a;
*p=c;
*(p+1)=d;
则int*p[4]和int(*q)[4]的存储数据为: