设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 718|回复: 6
打印 上一主题 下一主题

拷贝问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:23:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void test()
{
char *p;
strcpy(p,"abc");
} //1.大家讨论一下程序出错的原因?
//2.定义了一指针变量,系统会给它分配一内存吗?它所占用的内存方式是属于堆还是栈啊?
2#
发表于 2009-11-4 00:23:57 | 只看该作者
2006-9-1 15:40:56 kai

等 级:版主
威 望:52
帖 子:3337
专家分:17
注 册:2004-4-25
第 3 楼   得分:0  
穆扬,

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

paopao,

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

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

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

使用道具 举报

3#
发表于 2009-11-4 00:23:58 | 只看该作者
主要是没有给p所指向的地址分配空间.
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:23:59 | 只看该作者
定义了一指针变量,系统会给它分配一内存吗?它所占用的内存方式是属于堆还是栈啊?

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

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

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

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

使用道具 举报

5#
发表于 2009-11-4 00:24:00 | 只看该作者
bs 二楼.........你倒是说说你对 堆栈又 理解多少????
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 00:24:01 | 只看该作者
同意3楼的,大家水平是有高低之分,发帖就是为了得到问题的解决嘛,2楼的大侠这样说就不对了.
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-4 00:24:02 | 只看该作者
上面的错误,主要是他声明了指针,但是它不指向任何的变量,所以它是没有地址的.
回复 支持 反对

使用道具 举报

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

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 06:17 , Processed in 0.120332 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表