以下错误的方式,q只是形参,虽只向malloc()分配的内存,但p并不指向内存
#include<stdio.h>
#include<malloc.h>
void f(int *q)
{
q=(int*)malloc(sizeof(int));
*q=4;
}
void main()
{
int *p=NULL;
f(p);
printf("%d\n",*p);
}
以下是正确的方式,传递指针地址,用指向指针的指针作为形参,就可以在函数里改变p指针
#include<stdio.h>
#include<malloc.h>
void f(int **q)
{
*q=(int*)malloc(sizeof(int));
**q=4;
}
void main()
{
int *p=NULL;
f(&p);
printf("%d\n",*p);
}