是否可以使指针变量保存另一个指针变量的地址?例如:{
{1}}
答案 0 :(得分:10)
当然,指向指针的指针。
int i;
int *pi = &i;
int **ppi = π
指针指针没有什么特别不寻常的地方。它是一个像任何其他变量一样的变量,它包含变量的地址,就像任何其他变量一样。这只是设置正确类型的问题,以便编译器知道如何处理它们。
答案 1 :(得分:3)
是的,但它需要具有正确的类型。在您的示例int *ptr,*ptr1;
中,ptr
和ptr1
都有类型“int
指针”,它只能指向int
,而不是指针。如果您声明int *ptr, **ptr1;
,则ptr1
会输入“指向int *
的指针”,因此可以指向ptr
。
答案 2 :(得分:1)
以下是显示发生情况的示例
int a = 13;
int *ptr,
int **ptr1; // ** means pointer to pointer
ptr = &a;
ptr1 = &ptr;
cout << a; //value of a
cout << *ptr; //ptr points to a, *ptr is value of a
cout << **ptr1; //same as above
cout << &ptr; //prints out the address of ptr
cout << *ptr1; //same as above
int ***ptr
,int ****ptr
的工作方式相同。
答案 3 :(得分:0)
指向指针是可能的(并且非常常见),但int*
可能不够大,无法包含另一个int*
的地址。使用int**
。 (或void*
,一般指针)
答案 4 :(得分:0)
这里有两个答案,它们都是肯定的。
两个指针可以指向相同的位置
int b, *p1=&b, *p2=&b;
*p1 = 123;
*p2; // equals 123
您还可以指向指针:
int x = 2,y = 3,* p =&amp; x,** q =&amp; p;
请注意额外的星号。
**q; // equals 2
*q = &y;
**q; // equals 3
**q = 4;
y; // equals 4
答案 5 :(得分:0)
是, 请参阅以下代码。我希望它能满足你的目的
int a = 4;
int *ptr = &a;
int *ptr1 = (int*)&ptr;
cout << **(int**)ptr1;
这里ptr1是单指针,但表现为双指针