- 同级指针的值传递
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
void fun(int* q)
{
q = (int*)malloc(sizeof(int) * 10);
printf("%p\n", q);
}
int main()
{
int* p = NULL;
fun(p);
printf("%p", p);
}
对于以上代码p和q只是值传递,q在函数执行结束时就被销毁了。
![](https://i-blog.csdnimg.cn/blog_migrate/f7d3d6ac420a6df1531ea6ea3b9c0c2d.png)
- 不同级指针的地址传递
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
void fun(int** q)
{
*q = (int*)malloc(sizeof(int) * 10); //*q与p是相等的
printf("%p\n", *q);
}
int main()
{
int* p = NULL;
fun(&p);
printf("%p", p);
}
![](https://i-blog.csdnimg.cn/blog_migrate/91c9498b969e39db53644be8b3c1560f.png)