#include <iostream>
void GetMemeory(char *p)
{
p = (char *)malloc(100);
}
void Test()
{
char *str = NULL;
GetMemeory(str);
strcpy(str, "Thunder");
strcat(str + 2, "Downloader");
printf(str);
}
这段代码实际会崩溃。
函数的参数类型是指针变量
将str传入的时候实际上还是值传递,并不会改变str的值,所以str还是null
所以因为str没有空间存放字符串,导致崩溃
如果你要改变实参的值,就传递实参的地址。这里指针是作为实参,所以要传递指针的地址。
void GetMemory(char **p){
*p = (char *)malloc(100);
}
void Test(){
char *str = NULL;
GetMemory(&str);
strcpy(str,"Thunder");
strcat(str+2,"Downloader");
printf(str);
}