指针变量可以保存另一个指针变量的地址吗?

时间:2012-01-19 01:47:44

标签: c++ c pointers

是否可以使指针变量保存另一个指针变量的地址?例如:{
{1}}

6 个答案:

答案 0 :(得分:10)

当然,指向指针的指针。

int i;
int *pi = &i;
int **ppi = π

指针指针没有什么特别不寻常的地方。它是一个像任何其他变量一样的变量,它包含变量的地址,就像任何其他变量一样。这只是设置正确类型的问题,以便编译器知道如何处理它们。

答案 1 :(得分:3)

是的,但它需要具有正确的类型。在您的示例int *ptr,*ptr1;中,ptrptr1都有类型“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 ***ptrint ****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是单指针,但表现为双指针