关于 int (*a)[10] 这个语句的问题
具体问题如下,一个指向数组的指针定义:int(*p)[10];
赋值时候,将它指向一个具有10个元素的int型数组a;
打印p出现如下效果。
程序代码:
void main() { int i; int a[10]={0,1,2,3,4,5,6,7,8,9}; int (*p)[10]; p = a; for(i=0;i<10;i++) { printf("%d\n",*(p+i)); } system("pause"); }
图1
发现p=a出有一个警告:int *型 分配给 int(*)[10]类型。
于是改进一下用强制转换,然而打印出来,仍旧是这个样子。
程序代码:
#include <stdio.h> #include <stdlib.h> void main() { int i; int a[10]={0,1,2,3,4,5,6,7,8,9}; int (*p)[10]; p = (int (*)[10])a; for(i=0;i<10;i++) { printf("%d\n",*(p+i)); } system("pause"); }
图2
最后,用上了二级指针,正常了。
程序代码:
#include <stdio.h> #include <stdlib.h> void main() { int i; int a[10]={0,1,2,3,4,5,6,7,8,9}; int (*p)[10]; p = &a; for(i=0;i<10;i++) { printf("%d\n",*(*p+i)); } system("pause"); }
图3
求问,图1,2问题出在哪,有人能帮我解释一下嘛?实在是搞不懂了,不是等着喂,真的能力尽了。
[此贴子已经被作者于2018-12-17 21:23编辑过]