注意点01-对于指针的参数传递

#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);
}

猜你喜欢

转载自blog.csdn.net/zhc_24/article/details/78956163
01-