c程序运行结果

[复制链接]
查看11 | 回复3 | 2010-8-9 15:07:49 | 显示全部楼层 |阅读模式
#include
#include
void main()
{char ch[]="abcd",x[4][4];int i;
for(i=0;i<4;i++) strcpy(x,ch);
for(i=0;i<4;i++) printf("%s",&x);}
为啥结果是abcdabcdabcdabcdbcdabcdabcdcdabcdd。我预想的是abcdbcdcdd,请高手帮我解答一下,实在不是小妹吝啬,我确实没有财富值啦,希望大家慷慨解囊啦

回复

使用道具 举报

千问 | 2010-8-9 15:07:49 | 显示全部楼层
对于二维数组,是存在一段连续的内存空间。对于“%s”的事字符串,遇到'\0'才算结束。&x[0][0]作为指针输出的字符串是二维数组中的所有字符abcdabcdabcdabcd。&x[1][1]则是bcdabcdabcd &x[2][2]则是cdabcd&x[3][3]则是d。
回复

使用道具 举报

千问 | 2010-8-9 15:07:49 | 显示全部楼层
你输出有问题%s是输出一个字符串数组的,不能输出单个字符,他遇到'\0'才结束输出,如果没有找到'\0',就会一直输出下去,就成了你的这种情况,而且输出不要加&,这是取地址用的,输入单个变量时用这是我的程序,你对比一下看看#includeusing namespace std;int main(){ char a[
回复

使用道具 举报

千问 | 2010-8-9 15:07:49 | 显示全部楼层
x[5][5],\0还要一个空间
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行