**在**中意味着什么
当一个物体在开头有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 = …;
如果要访问此指针指向的值,则必须取消引用它两次:
**变量
它是指向指针的指针。 如果要指向array
或const char *
(字符串),可以使用此方法。 此外,在带有Cocoa的Objective-C中,这通常用于指向NSError*
。
指向另一个指针的指针
**是指向指针的指针。 这些有时用于字符串数组。
它是指向指针的指针。 如果* *表示它将包含某个变量的地址,而不是我说m =&x比m表示为int ** m