怎么会是这样嘞?
二维数组也是通过一维线性的方式储存的,那为什么不能直接把二维数组转换成一维的呢?这是我的代码#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a =
{
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}
};
int i,j,k;
for (i = 0;i<4;i++)
{
for ( j = 0; j < 5; j++)
{
k = i+j;
printf ("%2d ",a);
}
printf ("\n");
}
printf("\n");
system ("pause");
return 0;
}
这是标准答案
#include <stdio.h>
int main()
{
int a = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20}};
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
printf("%2d ", a);
if (i + j == 3)
{
printf("\n");
}
}
}
printf("\n");
return 0;
} 啊这 要怎么解释好呢{:10_277:} 额外减小 发表于 2022-12-29 14:48
啊这 要怎么解释好呢
{:5_96:}好像是要用指针才行,为什么会得到这样的结果嘞? 本帖最后由 jhq999 于 2022-12-29 17:33 编辑
水边的小姑娘 发表于 2022-12-29 14:56
好像是要用指针才行,为什么会得到这样的结果嘞?
a是二维数组a第k行首地址
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a =
{
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}
};
int i,j,k;
for (i = 0;i<5;i++)
{
for ( j = 0; j < 4; j++)
{
k = i*4+j;
printf ("%2d ",((int*)a));
}
printf ("\n");
}
printf("\n");
system ("pause");
return 0;
}
或者
for (i = 0;i<5;i++)
{
for ( j = 0; j < 4; j++)
{
printf ("%2d ",((int(*))a));
}
printf ("\n");
} 二维数组就是让程序员编码二维数据方便的
本质还是一维的
页:
[1]