指针
- 函数传参方式是值传递
形参其实也是个局部变量,出了函数就没了,所以怎么赋值怎么修改都没用。
#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;
}