注册 登录
编程论坛 C++教室

怎么理解这句话

ljt 发布于 2010-04-04 19:10, 571 次点击
题目:请指出下列程序中的错误并且修改
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");将使程序崩溃。
“错误--参数的值改变后,不会传回”这句话怎么理解,还是不知道为什么错了。
3 回复
#2
书呆2010-04-04 20:54
当GetMemory(str)执行结束返回Test时,在GetMemory中分配的空间会被释放,所以实际上str并没有分配到空间。
#3
yyblackyy2010-04-05 17:46
#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;
}
//楼主再试试~~~~~~~
#4
komany2010-04-17 15:15
printf是要指定输出类型的
1