我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 【讨论】指针问题 隐藏签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ achieve /ə'ti:v/ vt. 完成,实现,(经过努力)获得& 达到 ]


【讨论】指针问题

本帖被 zhd32 执行提前操作(2007-11-26)
下面的代码有什么指针问题?
Copy code
int * fun1 (void)
{
    int *Ptr;
    *Ptr = 10;
    return Ptr;
}

int * fun2 (void)
{
    int *Ptr;
    Ptr = (int *) malloc( sizeof (int));
    return Ptr;
}



[ 此帖被ljpdxj在2007-11-22 14:10重新编辑 ]
顶端 Posted: 2007-11-22 13:02 | [楼 主]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ chair /t/ə/ n. 椅子,(会议的)主席;vt. 当…的主席,主持 ]


fun1中不能对Ptr指针赋立即数;
fun2中的Ptr是一个局部变量,函数返回后会丢失,但malloc出来的空间却仍然残留在堆中
不知对不对……

自强不息!
顶端 Posted: 2007-11-22 13:24 | [1 楼]
ljpdxj



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 687
威望: 0
浮云: 1108
在线等级:
注册时间: 2006-02-28
最后登陆: 2008-06-29

5come5帮你背单词 [ paper /'peipə/ n. 纸,报纸,文章,论文,考卷,标据 ]


Quote:
引用第1楼yinx于2007-11-22 13:24发表的  :
fun1中不能对Ptr指针赋立即数;
fun2中的Ptr是一个局部变量,函数返回后会丢失,但malloc出来的空间却仍然残留在堆中
不知对不对……

第一个是因为*Ptr中存放的地址没有初始化,不能这样赋值
第二个我不也不知道哪里错了。。。
Ptr返回的是一个指向堆空间的一个地址,我觉得没有错。。。
顶端 Posted: 2007-11-22 13:30 | [2 楼]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ shoulder /'əuldə/ n. 肩;vt. 承担,肩负 ]


Quote:
引用第2楼ljpdxj于2007-11-22 13:30发表的  :

第一个是因为*Ptr中存放的地址没有初始化,不能这样赋值
第二个我不也不知道哪里错了。。。
Ptr返回的是一个指向堆空间的一个地址,我觉得没有错。。。


噢,对,栈空间被释放之前已经把返回值复制了一份传出去了

自强不息!
顶端 Posted: 2007-11-22 13:41 | [3 楼]
hhbhhb



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 292
威望: 0
浮云: 1105
在线等级:
注册时间: 2006-09-21
最后登陆: 2009-03-16

5come5帮你背单词 [ immortal /i'mo:tl/ a. 不朽的,永生的 ]


fun1将会以指针的形式返回10这个数字。当然10对应的实际地址是非法的,但是这个函数本身是没问题的。。。注意文中写的不是*Ptr=10;,而是Ptr=10。。强制转换那种编译都过不了的错误54。。
fun2单纯是分配一个int大小的空间并返回指针,应该也是没问题的。。只要后面记得释放。。
本帖最近评分记录:
  • 浮云:1(ljpdxj) 开始写错了。。。蝈蝈常来哟:)带动大家讨论问题共 ..
  • 顶端 Posted: 2007-11-22 13:42 | [4 楼]
    ljpdxj



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 687
    威望: 0
    浮云: 1108
    在线等级:
    注册时间: 2006-02-28
    最后登陆: 2008-06-29

    5come5帮你背单词 [ disciple /di'saipl/ n. 门徒,信徒 ]


    不好意思,同志们我纠正下上面的错误,第三行是*Ptr=10
    顶端 Posted: 2007-11-22 14:11 | [5 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.009255(s) query 5, Time now is:11-22 18:12, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号