指针的地址

Nil*_*mar 3 c++ pointers

为什么我们不能将指针的地址存储在另一个指针中?指针只是一个特殊类型的变量,它有一些地址,但为什么我不能将该地址存储到另一个指针?

int main()
{
    int * ptr;
    int * q;
    q = &ptr;
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码错了?

Mik*_*our 12

您可以将指针的地址 - 或任何其他对象类型 - 存储在另一个指针中.但你必须得到正确的类型; 你试图将指针的地址存储在指针中int,而不是指向指针的指针.

int ** q = &ptr;   // pointer to pointer to int
Run Code Online (Sandbox Code Playgroud)

  • @NileshKumar:表示"指向指针".通常`<type>*`表示"指向`<type>`"的指针; 所以`int*`的意思是"指向`int`的指针",而`int**`的意思是"指向`int`的指针". (4认同)
  • 另外,"address-of"运算符`&`的类型是_pointer-to-operand-type_.因此,如果你有一个`int foo`并执行`&foo`,结果类型是`int*`.同样,如果你有一个`char*bar`并且执行`&bar`,结果类型是`char**`.所以`&`增加另一个明星;-) (2认同)