C语言二级指针(指向指针的指针)
C语言中的二级指针是指向指针的指针。可以将其理解为一个指向指针的指针变量。
二级指针的声明格式如下:
数据类型 **指针变量名;
使用二级指针可以实现对指针的间接操作,通过二级指针可以修改一级指针所指向的内存地址,进而改变一级指针所指向的变量的值。
举个例子:
#include <stdio.h>
int main() {
int num = 10;
int *ptr1 = # // 一级指针,指向num
int **ptr2 = &ptr1; // 二级指针,指向ptr1
printf("num的值:%d\n", num);
printf("ptr1的值:%p\n", (void *)ptr1);
printf("ptr2的值:%p\n", (void *)ptr2);
**ptr2 = 20; // 修改num的值
printf("修改后的num的值:%d\n", num);
return 0;
}
输出结果:
num的值:10
ptr1的值:0x7ffee660a82c
ptr2的值:0x7ffee660a830
修改后的num的值:20
通过二级指针可以间接修改一级指针所指向的变量,这在某些情况下非常有用,比如在函数中通过二级指针将一个指针参数传递给另一个函数,从而修改指针所指向的变量。