C语言下面的程序为什么不能运行

[复制链接]
查看11 | 回复5 | 2013-1-24 11:55:35 | 显示全部楼层 |阅读模式
b是一个指针,*b是指针指向的位置。b并未指向任何位置,但是你却为他赋值,当然出错。char *b ;添加如下代码:char tmp; b = *b = *a;即可。这时候给*b赋值,就是给tmp赋值。追问还是不行啊,程序停止工作 回答还有个问题没有说到 printf(%s %s,*a,*b); %s输出的是字符串,但是无论*a还是*b都是一个字符,所以更改为 printf(%c %c,*a,*b);--------------------------------------------下面的代码你试试: char str[]={my}; char *a,*b; char temp; b =a=str; *b=*a; printf(%c %c,*a,*b); 赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:35 | 显示全部楼层
char str[]={my}; char *a,*b; a=str; b=a; printf(%s %s,a,b);这样就对了。。。赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:35 | 显示全部楼层
#includestdio.hint main(){ char str[]={my};
习惯上一般去掉大括号的,无所谓的 char *a,*b; a=str;b=a;
给指针赋值应该是b=a; printf(%s %sn,a,b);
这里应该是个地址,输出的是地址不是值}赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:35 | 显示全部楼层
a,b都是指针变量,存储的是一个地址,必须要赋值,而 语句*b=*a是把a所指存储单元的内容(即m)赋值给b所指内存单元,而b没有赋初值,是一个不确定的内存单元,这是非法的。char str[]=my;char *a,*b;a=str;b=a;printf(%s %s,a,b);这样a,b都指向数组str[]的首地址。另外%s是输出字符串,对应的必须是指针赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:35 | 显示全部楼层
a = str;是对的,这是指针赋值。*b = *a; b没有存放字符的空间,那么*a的内容m放哪儿呢? printf(%s %s,*a,*b);既然b是野指针,这里输出其内容就会出问题的,防病毒程序有可能以木马侵扰的方式提示你清楚之。赞同0|评论
回复

使用道具 举报

千问 | 2013-1-24 11:55:35 | 显示全部楼层
把大括号去掉试试赞同0|评论
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行