标题:运行后有错误 不知道是不是溢出了???
只看楼主
asd6791868
Rank: 1
来 自:逆流
等 级:新手上路
帖 子:362
专家分:7
注 册:2008-7-27
结帖率:88.24%
 问题点数:0 回复次数:14 
运行后有错误 不知道是不是溢出了???
void copy_string(char *from,char *to){
for(;*from!='\0';from++,to++)
*to=*from;
*to='\0';
}
main(){
char *a="I am a teacher.";
char *b="you are a student.";
printf("\nstring a=%s\nstring b=%s\n",a,b);
copy_string(a,b);
printf("\nstring a=%s\nstring b=%s\n",a,b);
}
搜索更多相关主题的帖子: char nstring printf 运行 void 
2008-08-07 19:42
Vegertar
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-8-3
得分:0 
char *b="you are a student.";
改为
char b[] = "you are a student.";
2008-08-07 20:01
asd6791868
Rank: 1
来 自:逆流
等 级:新手上路
帖 子:362
专家分:7
注 册:2008-7-27
得分:0 
回楼上能说一下为什么么???
谢谢 我菜鸟一只
2008-08-07 20:07
Vegertar
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-8-3
得分:0 
char *b="you are a student.";
在这里b可以理解成一个const char* ,"you are a student."存放在overlap数据段中,它里面的数据一般是不能被更改的.  所以b指向的内容不能修改.
而char b[] = "you are a student."
相当于 char b[18];strcpy(b,"you are a student.");内存是在栈中分配的.若没有显示的声明,不具备const性.
2008-08-07 20:22
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
得分:0 
请教2楼的朋友,那样子是不是防止指针悬挂.
我的理解是*b和*to都指向"you are a student."; 的地址
改了*to的内容可能会导致*b悬挂,所以系统不允许。
不知道是不是
2008-08-07 20:22
病书生
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-11-8
得分:0 
o 明白啦
2008-08-07 20:24
asd6791868
Rank: 1
来 自:逆流
等 级:新手上路
帖 子:362
专家分:7
注 册:2008-7-27
得分:0 
????
悬挂 是什么意思???我以前看到过把一个指针指向的数据复制到另一个指针指向的数据中去的例题 有没有例题我和上面的比较一下,,,,有点乱了
2008-08-07 20:35
Vegertar
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-8-3
得分:0 
指针悬挂:指针指向一块没有分配的内存.
2008-08-07 20:37
jiasuanji
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-11
得分:0 
我的看法
这个程序没有问题。用Tc运行后可以得到正确的结果。
2008-09-11 16:03
飞天舞xsj
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-12-25
得分:0 
这个程序主体没有问题,不知楼主在哪个编译器上运行的??不是在tc2.0的话请注意有没头文件#include<stdio.h>,这与指针悬挂没关系!!!

2008-09-11 16:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-227229-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112869 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved