-2

好的,我理解指针指针的概念。但我不知道为什么这不起作用。

void function(int **x) 
{
    *x = 10;
}

我不断收到错误消息:“int”类型的值不能分配给“int*”类型的实体

我做错了什么或者我对指针的指针不了解什么?

omg x_x 我把 C 和 C++ 混淆了。

4

4 回答 4

10

x 是指向指针的指针,因此您必须取消引用它两次才能到达实际对象。例如**x = 10;

于 2012-08-31T19:02:12.487 回答
7

好的,我理解指针指针的概念。

呐……

*x是一个int*,所以你不能分配一个int给它。

指针对指针的概念来自 C,其中引用不可用。它允许引用语义——即您可以更改原始指针。

于 2012-08-31T19:02:47.653 回答
6

简而言之,您需要取消引用两次。取消引用返回指针指向的东西,所以:

int   n     = 10;   //here's an int called n
int*  pInt  = &n;   //pInt points to n (an int)
int** ppInt = &pInt //ppInt points to pInt (a pointer)

cout << ppInt;      //the memory address of the pointer pInt (since ppInt is pointing to it)
cout << *ppInt;     //the content of what ppInt is pointing to (another memory address, since ppInt is pointing to another pointer
cout << *pInt;      //the content of what pInt is pointing to (10)
cout << **ppInt;    //the content of what the content of ppInt is pointing to (10)
于 2012-08-31T19:11:23.503 回答
0

x 指向的类型是int *,而不是int。你要么想做,static int i = 10; *x = &i要么**x = 10

于 2012-08-31T19:02:21.483 回答