~求教一个c语言程序~请高手们帮忙解答 (解释具体执行过程及结果)

[复制链接]
查看11 | 回复4 | 2011-1-8 16:50:54 | 显示全部楼层 |阅读模式
#include
void main()
{char s[]="xyz";
int i;
for(i=0;i<3;i++)
printf("%s",&s);
}
不是xyz,是xyzyzz,用c运算的,不过我不清楚过程。请问为什么能有在printf语句中出现地址符&,有什么作用。

回复

使用道具 举报

千问 | 2011-1-8 16:50:54 | 显示全部楼层
&就是取地址的意思i=0时,&s[0]就是取s[0]的地址,输出整个数组,相当于printf("%s",s[]);i=1时,&s[1]就是取s[1]的地址,输出数组的后两个字符,相当于printf("%s",s[1],s[2]);i=2时,&s[2]就是取s[2]的地址,输出数组的最后一个字符,相当于printf("%s",s[2]);我这个学期也是学C,共勉!!
回复

使用道具 举报

千问 | 2011-1-8 16:50:54 | 显示全部楼层
晕,c语言输出字符数组时会从你给定的位置开始连续输出数组的所有内容,直到碰到\0为止(c++字符串的结束位置是\0。c语言的不知道是什么)。你一共调用三次,每次指定的位置都加1。当然是xyzyzz
回复

使用道具 举报

千问 | 2011-1-8 16:50:54 | 显示全部楼层
就是逐个输出字符数组s啊,结果就是xyz啊
回复

使用道具 举报

千问 | 2011-1-8 16:50:54 | 显示全部楼层
如果是这样的话,结果为xyzyzzs[0]=xyzs[1]=yzs[2]=z
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行