• 函数传参方式是值传递
    形参其实也是个局部变量,出了函数就没了,所以怎么赋值怎么修改都没用。
#include <bits/stdc++.h>
using namespace std;
void A(char *p){
    p=(char*)malloc(100);
}
int main(){
    char* str=NULL;
    printf("%x\n",str);
    //str仍然是空指针,函数不能改变形参。
    A(str);
    printf("%x\n",str);
    return 0;
}
  • 换成二级指针
    传递一个二级指针,二级指针指向一个一级指针,所以可以修改。
#include <bits/stdc++.h>
using namespace std;
void A(char **p){
    *p=(char*)malloc(100);
}
int main(){
    char* str=NULL;
    printf("%x\n",str);
    A(&str);
    printf("%x\n",str);
    return 0;
}

版权声明:本文为zxcoder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zxcoder/p/12236975.html