C++想利用一维数组输出二维数组

来源:百度知道 编辑:UC知道 时间:2024/05/22 01:13:49
#include<stdio.h>
main()
{int i,j,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
printf("%d",a[i]);

}
为什么输出的不是我输入的数组
应该怎么用一维数组输出二维数组?
那这个程序 怎么可以得出结果啊 好象原理都一样啊

#include <stdio.h>
#define M 5
#define N 20
main()
{ char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
int i;
for(i=0; i<M; i++) printf("%s\n",ss[i]);
}

int a[M][N];

a是一个有M个元素的指针数组,数组中的每个元素指向的是一个有N个元素的整型数组

所以你的程序输出的是指针,也就是内存地址

a -> a[0] -> a[0][0] a[0][1] a[0][2]
a[1] -> a[1][0] a[1][1] a[1][2]
a[2] -> a[1][0] a[1][1] a[1][2]
--------------------------------------
与%s对应的是一个地址 看看以下代码
char *p = "abc";
char s[10] = "abc";
char ss[2][10] = {"abc", "bcd"};

printf("%s", "abc");
printf("%s", p);
printf("%s", s);
printf("%s", &s[0]);
printf("%s", ss[0]);
------------------------
以上printf的输出都是abc

用指针:

#include<stdio.h>
main() {
int i,j,a[3][3];
int *b;

for(i=0;i<3;i++)
for(j=0;j<3;j++) scanf("%d",&a[i][j]);
b = &a[0][0];

for(i=0;i<9;i++)
printf("%d ",b[i]);