| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:拷贝问题
只看楼主 加入收藏
paopao
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-9-1
收藏
 问题点数:0 回复次数:7 
拷贝问题

void test()
{
char *p;
strcpy(p,"abc");
} //1.大家讨论一下程序出错的原因?
//2.定义了一指针变量,系统会给它分配一内存吗?它所占用的内存方式是属于堆还是栈啊?

搜索更多相关主题的帖子: 拷贝 
2006-09-01 15:36
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-09-01 15:40
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
穆扬,

撇开楼主的话题, 我个人觉得, 他人的水平高低与否是不应该讨论的, 这也是对他人的一种尊重. 除非人家主动提出让你对他的水平予以评论.

paopao,

回到楼主的话题, 既然是copy, 那么就是将一样东西从一个地方挪到另一个地方(复制一份) , 那么就要明确目标地点. 就好像搬家一样, 如果你不明确新家的地址, 你怎么搬呢?

在你的代码中你申明了一个char 指针变量 p, 这个时候p 还是一个野指针. 如果你要使用 strcpy 这个函数, 那么你就需要有一个合适的目标空间. 而你的代码中并没有什么目标空间, 所以程序出错.

如果你使用new 开辟了一段空间, 然后将p 指向所开辟空间的首地址, 那么你就可以使用 strcpy 函数了, 当然如果使用new 需要配对使用 delete 来最终清除所开辟的空间. 你也可以先定义一个数组, 然后将 "abc" copy 到那个数组.

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-09-01 18:42
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
主要是没有给p所指向的地址分配空间.

倚天照海花无数,流水高山心自知。
2006-09-01 19:45
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
定义了一指针变量,系统会给它分配一内存吗?它所占用的内存方式是属于堆还是栈啊?

的确,指针就是变量,声明了,他就有了地址,也就占据了内存,(就和int i;一样,都

存储在栈中)。大小相当于sizeof(int);

但是这个内存只是用来存储这个指针的值的。并不是用来存储拷贝过来的"abc"的。这个时

候你还没有给个地方装他们。所以就要分配一个内存来存储他们。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-09-01 22:16
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
bs 二楼.........你倒是说说你对 堆栈又 理解多少????

2006-09-02 08:17
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
收藏
得分:0 
同意3楼的,大家水平是有高低之分,发帖就是为了得到问题的解决嘛,2楼的大侠这样说就不对了.

2006-09-04 15:54
makewelldone
Rank: 1
来 自:江苏南京
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-9-25
收藏
得分:0 
上面的错误,主要是他声明了指针,但是它不指向任何的变量,所以它是没有地址的.
2006-10-08 19:55
快速回复:拷贝问题
数据加载中...
 
   



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

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