代码一:按值传递/按引用传递
按值传递是指,在函数调用时,将参数的值复制一份传递给函数,函数中对参数值的修改不会影响到原始值
对于指针类型的参数,在按值传递的情况下,传递给函数的是指针变量的值(即指针变量所存储的地址),而不是指针所指向的内存地址。因此,当在函数中对指针变量赋值时,只是修改了指针变量的值,而不是指针所指向的内存地址。
void GetMemory1(char* p) {
p = (char*) malloc(100);
}
char* str = NULL;
GetMemory1(str);
p 指向的是一个新分配的内存块,但是这个操作不会影响到原始指针 str,因为传递给函数的是指针 str 的副本,即指针变量的值,而不是指针所指向的内存地址
修改方案1:采用引用作为函数参数
void GetMemory1(char*& p) {
p = (char*) malloc(100);
}
修改方案2:指向指针的指针
void GetMemory2(char** p) {
*p、p = (char*) malloc(100);
代码二:作用域/内存释放
char *GetMemory2(void){char p[] = "hello world";return p;
}
void Test2(void){char *s