**在**中意味着什么

时间:2010-05-23 19:34:20

标签: c++ c syntax pointers operators

当一个物体在开头有两个星号时是什么意思?

**variable

12 个答案:

答案 0 :(得分:46)

在声明中,它表示它是指向指针的指针:

int **x;  // declare x as a pointer to a pointer to an int

使用它时,它会将它推迟两次:

int x = 1;
int *y = &x;  // declare y as a pointer to x
int **z = &y;  // declare z as a pointer to y
**z = 2;  // sets the thing pointed to (the thing pointed to by z) to 2
          // i.e., sets x to 2

答案 1 :(得分:29)

它是指向指针的指针。 有关详细信息,请查看:Pointer to pointer

编辑例如,动态分配多维数组可能会很好:

喜欢:

#include <stdlib.h>

int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
    fprintf(stderr, "out of memory\n");
    exit or return
}
for(i = 0; i < nrows; i++)
{
    array[i] = malloc(ncolumns * sizeof(int));
    if(array[i] == NULL)
    {
        fprintf(stderr, "out of memory\n");
        exit or return
    }
}

答案 2 :(得分:6)

这意味着变量是指向指针的指针。

答案 3 :(得分:6)

声明变量时指针指针。

在声明之外使用时,双指针取消引用。

答案 4 :(得分:4)

指向指针的指针。

答案 5 :(得分:4)

您可以使用cdecl来解释C类型。

这里有一个在线界面:http://cdecl.org/。在文本字段中输入“int ** x”并检查结果。

答案 6 :(得分:2)

**变量是双重取消引用。如果variable是地址的地址,则生成的表达式将是存储在* variable中的地址的左值。

如果它是声明的一部分,它可能意味着不同的事情:

另一方面,

type **变量意味着指向指针的指针,即一个可以保存另一个变量的地址的变量,该变量也是一个指针,但这次是一个类型为'type的变量“

答案 7 :(得分:2)

这意味着该变量被解除引用两次。假设你有一个指向char的指针,如下所示:

char ** variable = ...;

如果要访问此指针指向的值,则必须取消引用它两次:

**变量

答案 8 :(得分:1)

它是指向指针的指针。如果要指向arrayconst char *(字符串),可以使用此选项。此外,在带有Cocoa的Objective-C中,这通常用于指向NSError*

答案 9 :(得分:1)

指向另一个指针的指针

答案 10 :(得分:1)

**是指向指针的指针。这些有时用于字符串数组。

答案 11 :(得分:0)

它指向指针的指针。 就像if * x意味着它将包含一些变量的地址而不是我说的 m =&amp; x比m显示为 int ** m