当一个物体在开头有两个星号时是什么意思?
**variable
答案 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)
它是指向指针的指针。如果要指向array
或const char *
(字符串),可以使用此选项。此外,在带有Cocoa的Objective-C中,这通常用于指向NSError*
。
答案 9 :(得分:1)
指向另一个指针的指针
答案 10 :(得分:1)
**是指向指针的指针。这些有时用于字符串数组。
答案 11 :(得分:0)
它指向指针的指针。 就像if * x意味着它将包含一些变量的地址而不是我说的 m =&amp; x比m显示为 int ** m