c语言中 int *p[4]和int (*p)[4]在定义和使用方面有什么区别? O(∩_∩)O谢谢

请详细回答,最好有举例。
2025-04-16 23:10:48
推荐回答(1个)
回答1:

*p[4]这指针数组,定义一个数组,里面存放的是指针。
(*p)[4]定义的是一个指向一维数组的指针,这是一个指针,p++相当于p的地址相加了1*4
举例说明:
#include
void main()
{
int a[2][2]={{1,2},{8,9}};
int *p[4],(*q)[2];

q=a;
p[0]=&a[0][0];
p[1]=&a[0][1];
p[2]=&a[1][0];
p[3]=&a[1][1];
for(int i=0;i<4;i++)
printf("%d\t",*p[i]);
printf("\n");
for(int j=0;j<2;j++,q++)
{printf("%d\t",(*q)[j]);
}
printf("\n");
}}
输出的结果是:
指针数组:1,2,8,9指针数组中的每个元素都要给其赋予地址,否则出错
数组指针:1,9数组指针只要开始赋值头地址,之后执行q++是相加维数,所以结果是1,9而不是1,2