念珠菌感染用药:后天考c语言,可是复习时候碰到一些困难,请问大家帮忙解答!急5

来源:百度文库 编辑:高校问答 时间:2024/05/04 15:54:19
有以下程序
?? main()
??{
??int a[3][3],*p,i;
??p=&a[0][0];
??for(i=0;i<9;i++)p[i]=i;
??for(i=0;i<3;i++)printf("%d",a[1][i]);
??}
??程序运行后的输出结果是_D_____。
??A)012 B)123 C)234 D)345
我想问下 这个程序说的是什么意思啊?

main()
{
int a[3][3],*p,i;/* 定义二围数组,三行三列 */
p=&a[0][0]; /* 数组赋给指针P */
for(i=0;i<9;i++)p[i]=i; /* i自加从0到8的数赋给数组 */
for(i=0;i<3;i++)printf("%d",a[1][i]);}/*输出按照1行i列输出*/
a[1][i]从第一行 i列开始,执行到
p[i]={ 1, 2 ,3 ,4, 5 ,6, 7, 8 }
for(i=0;i<3;i++)printf("%d",a[1][i])
上面for的循环 i从0开始第一次输出第1行0列
循环回来后i递增变 1 输出第1行1列
以次类推到i<3为止。

考察的是二维数组在内存中存储,先行后列,存完第一行后再存第二行。

p=&a[0][0];p取得a[0][0]的地址,也可以说建立数组p[9];p[0]=a[0][0],p[1]=a[0][1],p[2]=a[0][2],p3=a[1][0]......依次类推。
for(i=0;i<9;i++)p[i]=i; 按照行序给数组a赋值;
for(i=0;i<3;i++)printf("%d",a[1][i]); 显示第二行的数据。

输出第一行的三个数!