我们已经知道指针指向内存中的一个位置,因此用于存储变量的地址。所以,当我们定义一个指向指针的指针时。第一个指针用于存储变量的地址。第二个指针用于存储第一个指针的地址。这就是为什么它们也被称为双指针。
如何在C中声明指向指针的指针?
声明指向指针的指针类似于在 C 中声明指针。不同之处在于我们必须在指针名称之前放置一个额外的“*”。
语法:
下图解释了双指针的概念:
上图显示了指向指针的指针的内存表示。第一个指针ptr1 存储变量的地址,第二个指针ptr2 存储第一个指针的地址。
让我们借助以下程序更清楚地理解这一点:
输出:
int **ptr; // 声明双指针


#include <stdio.h>
// C program to demonstrate pointer to pointer
int main()
{
int var = 789;
// pointer for var
int *ptr2;
// double pointer for ptr2
int **ptr1;
// storing address of var in ptr2
ptr2 = &var;
// Storing address of ptr2 in ptr1
ptr1 = &ptr2;
// Displaying value of var using
// both single and double pointers
printf("Value of var = %dn", var );
printf("Value of var using single pointer = %dn", *ptr2 );
printf("Value of var using double pointer = %dn", **ptr1);
return 0;
}
Value of var = 789 Value of var using single pointer = 789 Value of var using double pointer = 789