### 二级指针 用来记录普通类型存储区地址的指针叫一级指针。 二级指针用来记录一级指针的地址。 声明二级指针的时候需要使用两个*。 #include <stdio.h> int main(){ int num = 0; int *p_num = &num; int **pp_num = &p_num; **pp_num = 10; printf("num = %d\n", num); *pp_num = NULL; printf("p_num = %p\n", p_num); return 0; } 二级指针前使用\*\*可以表示捆绑的普通类型的存储区。 二级指针前使用*可以表示捆绑的一级指针存储区。 二级指针可以用来代表指针数组,但是不能用来代表二维数组。 #include <stdio.h> int main(int argc, char **argv){ int num = 0; for (num = 0;num <= argc - 1;num++){ printf("%s\n", *(argv + num)); } return 0; } 无类型指针有可能实际代表的是一个二级指针。 被调用函数可以通过二级指针形式参数,向调用函数传递一个地址数据。 #include <stdio.h> void set_null(int **pp_num){ *pp_num = NULL; } int main(){ int num = 0; int *p_num = &num; set_null(&p_num); printf("p_num = %p\n", p_num); return 0; }