#include<stdio.h>
#include<string.h>
main()
{ char w[ ][10]={"ABCD","EFGH","IJKL","MNOP"},K;
for(k=1;k<3;k++)
printf("%s\n",&w[k][k]);
}
",&w[k][k]); 在printf 难道要加&
这是为什么呢?
没有问题的,这个只是用了一个字符串输出的小技巧
w[k][k]是一个二维数组成员,那么&w[k][k]就是这个成员的地址,
那么以%s这个输出控制符来进行printf的话,
就变成了输出以&w[k][k]为首地址的字符串。
我们将w展开,可以看成如下:
"ABCD"
"EFGH"
"IJKL"
"MNOP"
当k=1时,w[k][k]就是'F',那么&w[k][k]就是'F'的地址,
以%s这个输出控制符来进行printf的话,
就变成了输出以'F'的地址为首地址的字符串,
输出"FGH"
当k=2时,w[k][k]就是'K',那么&w[k][k]就是'K'的地址,
以%s这个输出控制符来进行printf的话,
就变成了输出以'K'的地址为首地址的字符串,
输出"KL"
所以最后输出结果为:
FGH
KL
w[k][k]是一个二维数组成员,那么&w[k][k]就是这个成员的地址,
那么以%s这个输出控制符来进行printf的话,
就变成了输出以&w[k][k]为首地址的字符串。
我们将w展开,可以看成如下:
"ABCD"
"EFGH"
"IJKL"
"MNOP"
当k=1时,w[k][k]就是'F',那么&w[k][k]就是'F'的地址,
以%s这个输出控制符来进行printf的话,
就变成了输出以'F'的地址为首地址的字符串,
输出"FGH"
当k=2时,w[k][k]就是'K',那么&w[k][k]就是'K'的地址,
以%s这个输出控制符来进行printf的话,
就变成了输出以'K'的地址为首地址的字符串,
输出"KL"
所以最后输出结果为:
FGH
KL
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-04-16
printf("%s",var);的意思是输出从var所指的地址开始的一个字符串,自然var就必须是一个地址。&w[k][k]所指向的地址你应该能分析出来吧,再实际执行一下你就明白了
第2个回答 2009-04-16
该printf()函数输出的是w[k][k]的地址,也许这个程序就想输出地址吧.如果没有&,则输出的是w[k][k]的值
第3个回答 2009-04-16
&是取址符,加了后输出的是地址的值
第4个回答 2009-04-16
去地址符号啊 输出的是地址哦