| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 571 人关注过本帖
标题:怎么理解这句话
只看楼主 加入收藏
ljt
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:191
专家分:431
注 册:2009-4-6
结帖率:90.48%
收藏
已结贴  问题点数:10 回复次数:3 
怎么理解这句话
题目:请指出下列程序中的错误并且修改
void GetMemory(char *p){
p=(char *)malloc(100);
}
void Test(void){
char *str=NULL;
GetMemory=(str);
strcpy(str,"hello world");
printf(str);
}
答案:
A:错误--参数的值改变后,不会传回
GetMemory并不能传递动态内存,Test函数中的 str一直都是 NULL。
strcpy(str, "hello world");将使程序崩溃。
“错误--参数的值改变后,不会传回”这句话怎么理解,还是不知道为什么错了。
搜索更多相关主题的帖子: hello world 动态 
2010-04-04 19:10
书呆
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:188
注 册:2010-3-26
收藏
得分:5 
当GetMemory(str)执行结束返回Test时,在GetMemory中分配的空间会被释放,所以实际上str并没有分配到空间。

沉醉东风月下读。柴门闭,莫管客来无。
2010-04-04 20:54
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:5 
#include<stdio.h>                           //这是修改好的
#include<stdlib.h>
#include<string.h>
void GetMemory(char *&p)                 //这里用引用
{
        p=(char *)malloc(12);           //数值改小点,空间啊~~~~~
}
void Test(void)
{
        char *str=NULL;
        GetMemory(str);             //楼主这里写错了 楼主加了“=”
        strcpy(str,"hello world");
        printf("%s\n",str);              //这里我修改了一下  这样看的爽
}
int main()
{
    Test();
    return 0;
}
//楼主再试试~~~~~~~
2010-04-05 17:46
komany
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2010-3-28
收藏
得分:0 
printf是要指定输出类型的
2010-04-17 15:15
快速回复:怎么理解这句话
数据加载中...
 
   



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

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