解释一下这个程序

#include<stdio.h>
#include<string.h>
void main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
{
printf("%s\n",&w[k][k]);
}
}

好吧
char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
这是定义一个二维char数组,第一个[]看成行,第二个[]看成是列,就是4行10列的二维数组
for(k=1;k<3;k++)
{
printf("%s\n",&w[k][k]);
}
这时一个循环,循环2次,输出w[1][1],w[2][2]的值。
因为printf里面是%s,要求以字符串格式输出,所以后面必须是一个地址,所以用了&取地址符号,取出w[2][2]和w[1][1]的地址,追问

那样结果会输出什么啊

追答

我认为会输出
FGH

KL

追问

为什么啊

追答

因为用printf("%s");输出,是以字符串形式输出的,碰到'\0'才会停止
w[1][1]的地址是F,但他后面不是'\0',所以会一直输出,直到H后面是'\0'才会结束

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-11
W是个二维数组

for循环输出二维数组的值
第2个回答  2012-08-11
FGH
KL