C语言中的指针是非常重要的概念,可以说是C语言的灵魂所在。指向指针的指针是指通过指针来指向另一个指针的指针变量。
一个指针变量只能指向一个内存地址,而指向指针的指针则可以指向指针所指向的内存地址,从而实现对指针所指向的内存空间进行间接操作,扩展指针的功能。
在声明指向指针的指针时,需要在变量名前加上两个星号,如:int **pptr;
使用指向指针的指针时,需要使用两个星号进行取值或者赋值操作,如:**pptr = 10;
以下是一些指向指针的指针示例:
示例一
#include <stdio.h>
int main() {
int var;
int *ptr;
int **pptr;
var = 3000;
// 获取var的地址
ptr = &var;
// 获取ptr的地址
pptr = &ptr;
// 通过ptr直接访问var
printf("Value of var = %d\n", var);
// 通过ptr和pptr间接访问var
printf("Value of var = %d\n", *ptr);
printf("Value of var = %d\n", **pptr);
return 0;
}
输出结果:
Value of var = 3000
Value of var = 3000
Value of var = 3000
在这个示例中,我们声明了一个整型变量var、一个整型指针变量ptr和一个指向指针的指针变量pptr。通过对变量和指针变量的赋值,我们可以通过ptr和pptr指针来操作var的内存空间,得到var的值。
示例二
#include <stdio.h>
int main() {
int var;
int *ptr;
int **pptr;
var = 3000;
// 获取var的地址
ptr = &var;
// 获取ptr的地址
pptr = &ptr;
// 通过ptr和pptr间接访问var
printf("Value of var = %d\n", *ptr);
printf("Value of var = %d\n", **pptr);
// 通过ptr和pptr改变var的值
*ptr = 1000;
printf("Value of var = %d\n", var);
**pptr = 5000;
printf("Value of var = %d\n", var);
return 0;
}
输出结果:
Value of var = 3000
Value of var = 3000
Value of var = 1000
Value of var = 5000
在这个示例中,我们演示了如何通过指向指针的指针来改变var的值。我们首先通过ptr和pptr指针间接访问var的内存空间,然后通过对ptr和pptr间接赋值的方式改变了var的值,最后输出var的值验证改变是否成功。