色情漫画之家庭教师:这个题错哪了?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/13 12:07:41
#include<stdio.h>
void main()
{
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int *p[3]={a[0],a[1],a[2]};
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%4d",*(p[i]+j));
printf("\n");
}
getch();
}
说是第五行的初始化是非法的?可我觉得是对的啊!

#include<stdio.h>
void main()
{
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int (*p)[4]=a;
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%4d",*(p[i]+j));
printf("\n");
}
getch();
}
//只要这样就行了,数组空间是连续的,只需指向首地址,int (*p)[4]=a;

int[4] *p[3]={a[0],a[1],a[2]};

貌似指针数组不能直接这样初始化
辛苦点
一个一个写吧

int *p[3] 意思是声明了一个有3个元素的一维数组,你用2维的声明一维的肯定不行.
我想至少应该写成int *p[3][4]吧.