为什么用二级指针及其应用
由一个问题引发的思考
一般而言,我见到的,用到的二级指针的地方并不多,典型的应用就是将空指针指向一个确定的空间,进行赋值操作。
初学者往往刚开始会用用一级指针去完成上述操作,但并不对,下面将对两种情况分别说明。
一级指针:

#include <stdio.h> #include <stdlib.h> void p_test(char* p) { printf("&p=%p\n",&p); //传入的指针地址跟mian中的ptr地址并不相同 p = (char*)malloc(sizeof(char)); *p = 11; printf("*p %d\n",*p); } int main(int argc, char** argv) { char *ptr = NULL; printf("ptr=%p\n",&ptr); p_test(ptr); printf("ptr=%p *ptr=%d\n",ptr,*ptr);//打印不出来,因为指向的空间为空 }

二级指针:

#include <stdio.h> #include <stdlib.h> void pp_test(char** p) { printf("&p:%p p:%p\n",&p,p);//p指向mian中的pointer *p = (char*)malloc(sizeof(char)); **p = 11; printf("**p %d\n",**p); } int main(int argc, char** argv) { char *ptr = NULL; printf("ptr=%p\n",&ptr); pp_test(&ptr); printf("*ptr %d\n",*ptr); }

浙公网安备 33010602011771号