下面程序为何不对呢????int a[3][2] {0},(*ptr)[2],i,jfor(int i 0i3i++){ptr a + ifor(int j
下面程序为何不对呢????
int a[3][2] = {0},(*ptr)[2],i,j;
for(int i = 0;i<3;i++)
{
ptr = a + i;
for(int j = 0;j<2;j++)
{
scanf("%d",ptr[i][j]);
//ptr++;
}
}
for(int i=0;i<3;i++)
{
for(j=0;i<2;j++)
printf("%d",a[i][j]);
printf("\n");
}
[解决办法]
还有几个错误没注意到:scanf要求的是数据指针,下面的输出循环中的内层循环应该是j<2耐而不是i<2。所以应该是:
int a[3][2] = {0},(*ptr)[2],i,j;
for(i = 0; i<3; i++)
{
ptr = a + i;
for(int j = 0; j<2; j++)
{
scanf("%d",*ptr+j);
//scanf("%d",ptr[0]+j);
//scanf("%d",&ptr[0][j]);
//scanf("%d",&(*ptr)[j]);
//上面四个喜欢哪个用哪个
}
}
for(int i=0; i<3; i++)
{
for(j=0; j<2; j++)
printf("%d",a[i][j]);
printf("\n");
}
其实还有一种方法更常见:
int a[3][2] = {0},*ptr;//这里就用int*,不用数组指针
int i,j;
ptr = &a[0][0];
for(int i = 0; i<3; i++)
{
for(int j = 0; j<2; j++)
{
scanf("%d",ptr++);
}
}
