好的,我理解指针指针的概念。但我不知道为什么这不起作用。
void function(int **x)
{
*x = 10;
}
我不断收到错误消息:“int”类型的值不能分配给“int*”类型的实体
我做错了什么或者我对指针的指针不了解什么?
omg x_x 我把 C 和 C++ 混淆了。
x 是指向指针的指针,因此您必须取消引用它两次才能到达实际对象。例如**x = 10;
好的,我理解指针指针的概念。
呐……
*x
是一个int*
,所以你不能分配一个int
给它。
指针对指针的概念来自 C,其中引用不可用。它允许引用语义——即您可以更改原始指针。
简而言之,您需要取消引用两次。取消引用返回指针指向的东西,所以:
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)
x 指向的类型是int *
,而不是int
。你要么想做,static int i = 10; *x = &i
要么**x = 10
。