返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709
问题:
问:int (*p)[n]与int *p[n]的区别?
答:
1.int (*p)[n]是数组指针,指向某n个元素所组成的整块的数组,返回值是整型指针类型的。
2.int *p[n]是指针数组,指向数组里面的每个元素,即p指向第一个元素,p[1]指向第二个元素,以此类推,p[n-1]指向第n-1个元素,返回值是整型的。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题:
问:下面代码的输出结果是什么?
void main()
{
int arr[][3] = { 1, 2, 3, 4, 5, 6 };
int(*ptr)[3] = arr;
printf("%d %d\n",(*ptr)[0],(*ptr)[1]);
ptr++;
printf("%d %d\n", (*ptr)[0], (*ptr)[1]);
}
答:1 2 4 5
分析:
int(*ptr)[3] = arr;指向整型数组的指针,数组包含3个元素,也就是说ptr这个指针指向包含了3个元素的一维数组,并且指向arr的首地址。
如果ptr++,ptr指向数组的下一个包含3个元素的一维数组。
小结:
int (*ptr)[n]指向int a[n]这整块数组。
详细分析,请看下一题。
-----------------------------------------------------------------------------------------------------------------------------------------------
问题:
问:下面代码的输出结果是什么?
void main()
{
int arr[6] = { 1, 2, 3, 4, 5, 6 };
int(*ptr)[6] = &arr;
printf("%d,%d,%d,%d,%d,%d\n", (*ptr)[0], (*ptr)[1], (*ptr)[2], (*ptr)[3], (*ptr)[4], (*ptr)[5]);
ptr++;
printf("%d %d\n", (*ptr)[0]);
}
答:
1,2,3,4,5,6
-858993460(随机)
分析:
void main()
{