**在**中意味着什么

当一个物体在开头有2个星号时,它意味着什么?

**variable 

它是指向指针的指针。 有关更多详细信息,您可以检查: 指向指针

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

喜欢 :

 #include  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 } } 

在声明中,它意味着它是指向指针的指针:

 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 // ie, sets x to 2 

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

声明变量时指针指针。

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

指向指针的指针。

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

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

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

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

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

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

char ** variable = …;

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

**变量

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

指向另一个指针的指针

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

它是指向指针的指针。 如果* *表示它将包含某个变量的地址,而不是我说m =&x比m表示为int ** m