C语言 这是考试中的一道题目(编译通过,运行有问题),哪位高手帮我改改,并解释下为什么会这样???

2025-03-07 14:49:33
推荐回答(3个)
回答1:

strcpy()函数所在的头文件是 string.h,所以你还要加上#include
这样之后编译会通过,没有问题。
但是你的程序编写的可能存在问题,你再检查一下。

回答2:

GetMemory(str);调用过程:
将str的值复制给形参p,即p=str=null,分配内存(malloc),p=返回指针值,释放p的值,(p是GetMemory中定义的,函数结尾要释放值),结束。
注意:str的值没有变。

回答3:

关键是指针,和参数传递,下面是修改后的程序::
#include
#include
#include
#include
//char *str = NULL;
void GetMemory(char **p)
{

*p = (char *)malloc(100);
}

void Test(char **str)
{

GetMemory(str);
//p = (char *)malloc(100);
strcpy(*str, "hello world");
printf("str=%s\n",*str);
}

int main()
{
char *str = NULL;
Test(&str) ;
return 0;
}