关于 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编辑过]







)!