为什么我们不能将指针的地址存储在另一个指针中?指针只是一种特殊类型的变量,它有一些地址,但为什么我不能将该地址存储到另一个指针中呢?
int main()
{
int * ptr;
int * q;
q = &ptr;
}
为什么这段代码有误?
你可以将一个指针 - 或任何其他对象类型 - 的地址存储在另一个指针中。但你必须要正确地获取类型; 你正在尝试将一个指针的地址存储在指向 int
的指针中,而不是指向指针的指针。
int ** q = &ptr; // pointer to pointer to int
<type>*
表示“指向<type>
的指针”,因此int*
表示“指向int
的指针”,而int**
表示“指向指向int
的指针”。 - Mike Seymour&
的类型是“操作数类型的指针”。如果你有一个int foo
并执行&foo
,结果类型是int *
。同样地,如果你有一个char * bar
并执行&bar
,结果类型是char **
。所以,&
会加上另一个星号 ;) - DarkDust