| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 542 人关注过本帖
标题:运行后有错误 不知道是不是溢出了???
收藏  订阅  推荐  打印
asd6791868
Rank: 2
来自:逆流
等级:注册会员
帖子:123
积分:1386
注册:2008-7-27
运行后有错误 不知道是不是溢出了???

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);
}
2008-8-7 19:42
Vegertar
Rank: 1
等级:新手上路
帖子:11
积分:218
注册:2008-8-3

char *b="you are a student.";
改为
char b[] = "you are a student.";
2008-8-7 20:01
asd6791868
Rank: 2
来自:逆流
等级:注册会员
帖子:123
积分:1386
注册:2008-7-27
回楼上能说一下为什么么???

谢谢 我菜鸟一只
2008-8-7 20:07
Vegertar
Rank: 1
等级:新手上路
帖子:11
积分:218
注册:2008-8-3

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-8-7 20:22
病书生
Rank: 2
等级:注册会员
帖子:93
积分:1150
注册:2007-11-8

请教2楼的朋友,那样子是不是防止指针悬挂.
我的理解是*b和*to都指向"you are a student."; 的地址
改了*to的内容可能会导致*b悬挂,所以系统不允许。
不知道是不是
2008-8-7 20:22
病书生
Rank: 2
等级:注册会员
帖子:93
积分:1150
注册:2007-11-8

o 明白啦
2008-8-7 20:24
asd6791868
Rank: 2
来自:逆流
等级:注册会员
帖子:123
积分:1386
注册:2008-7-27
????

悬挂 是什么意思???我以前看到过把一个指针指向的数据复制到另一个指针指向的数据中去的例题 有没有例题我和上面的比较一下,,,,有点乱了
2008-8-7 20:35
Vegertar
Rank: 1
等级:新手上路
帖子:11
积分:218
注册:2008-8-3

指针悬挂:指针指向一块没有分配的内存.
2008-8-7 20:37
jiasuanji
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2008-9-11
我的看法

这个程序没有问题。用Tc运行后可以得到正确的结果。
2008-9-11 16:03
飞天舞xsj
Rank: 2
来自:华中科技大学
等级:注册会员
帖子:45
积分:668
注册:2006-12-25

这个程序主体没有问题,不知楼主在哪个编译器上运行的??不是在tc2.0的话请注意有没头文件#include<stdio.h>,这与指针悬挂没关系!!!

2008-9-11 16:56
共有 541 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.054686 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved