C语言 指向指针的指针

  • Post category:C

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的值验证改变是否成功。