#include <stdio.h>
void fun(int** q);
void fun2(int** q);
main() {
int* p;
//把p的二级指针传给fun
fun(&p);
printf("%d", *p);
//动态分配内存
fun2(&p);
}
//-----------------------------------------------------------------------------------------------
void fun(int** q) {
int s = 100;
*q = &s;
}
/*上面函数的意思是:
int **q; 定义二级指针q 即 q 指向 *q ,*q 可以指向一个整形
*q=&s *q 指向整形s
q=&p 调用时,赋值
综上: q->*q->s
q->p
所以: p->s
结论: 把指针p 的指针(地址&p=q)传给一个函数后*q= p ,
对*q即是对p进行操作 ,此时*q是指针,可以指向s
*/
//-----------------------------------------------------------------------------------------------
void fun2(int** q) {
*q = (int*)malloc(sizeof(int));
}
/*上面函数动态申请内存
不释放
调用完成后,主函数可以继续使用fun2 申请的内存
*/