#include <stdio.h>
#include <stdlib.h>
void f1(int *p);
int main(void){
int *p1;
f1(p1);
*p1=4;
}
void f1(int *p){
p=malloc(sizeof(int));
}
f1中的指针是局部变量,在f1 执行完毕以后,p 就被回收了,是一个不存在的指针了,虽然malloc 所分配的内存仍然存在,但是这个内存区域的地址已经丢失了。
主函数中只是将p1 赋值给了p,p和 p1 ,指向相同,都是空指针。p只是p1的拷贝。在malloc 后,p 不是空指针了,但是p1,还是空指针,如果要实现程序的功能(通过f1,对指针p 进行初始化),那么就必须将指针变量p1的地址,传递进去。
void f1(int** p);
int main(void){
int *p1;
f1(&p1);
*p1=4;
}
void f1(int** p){
*p=malloc(sizeof(int));
}
#include <stdlib.h>
void f1(int *p);
int main(void){
int *p1;
f1(p1);
*p1=4;
}
void f1(int *p){
p=malloc(sizeof(int));
}
f1中的指针是局部变量,在f1 执行完毕以后,p 就被回收了,是一个不存在的指针了,虽然malloc 所分配的内存仍然存在,但是这个内存区域的地址已经丢失了。
主函数中只是将p1 赋值给了p,p和 p1 ,指向相同,都是空指针。p只是p1的拷贝。在malloc 后,p 不是空指针了,但是p1,还是空指针,如果要实现程序的功能(通过f1,对指针p 进行初始化),那么就必须将指针变量p1的地址,传递进去。
void f1(int** p);
int main(void){
int *p1;
f1(&p1);
*p1=4;
}
void f1(int** p){
*p=malloc(sizeof(int));
}