16 二级指针

#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 申请的内存

*/

 

posted @ 2020-05-31 15:25  abel2020  阅读(121)  评论(0编辑  收藏  举报