标题:怎么理解这句话
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-301680-1-1.html




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

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