#include<stdio.h>
#include<malloc.h>
#include<malloc.h>
int * f()
{
int *q=(int *)malloc(sizeof(int));
int j=20;
q=&j;
return q;
}
int main()
{
int *p;
p=f();
printf("%d", *p);
return 0;
}
#include<malloc.h>
void f(int ** q){
int j=20;
*q=&j;
}
int main(){
int *p;
f(&p);
return 0;
}
可行
#include<stdio.h>#include<malloc.h>
int * f()
{
int *q=(int *)malloc(sizeof(int));
int j=20;
q=&j;
return q;
}
int main()
{
int *p;
p=f();
printf("%d", *p);
return 0;
}
f函数开辟一个q指针,指向j,函数结束后,动态开辟的内存并没有释放。成功
#include<stdio.h>
#include<malloc.h>
void f(int * q){
int j=20;
q = (int *)malloc(sizeof(int));
q = &j;
}
int main(){
int *p;
f(p);
printf("%d", *p);
return 0;
}
不行
#include<stdio.h>
#include<malloc.h>
void f(int ** q){
*q = (int *)malloc(sizeof(int));
**q = 20;
}
int main(){
int *p;
f(&p);
printf("%d", *p);
return 0;
}
按址传递,可行