Что означает, когда объект имеет в начале звездочку 2 звездочки?
**variable
Что означает, когда объект имеет в начале звездочку 2 звездочки?
**variable
Это указатель на указатель. Для получения дополнительной информации вы можете проверить: Указатель на указатель
EDIT Это может быть полезно, например, для динамического выделения многомерных массивов:
Вроде:
#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
}
}
В объявлении это означает его указатель на указатель:
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
Это означает, что переменная является указателем на указатель.
Указатель на указатель при объявлении переменной.
Двойной указатель указателя при использовании вне объявления.
Указатель на указатель.
Вы можете использовать cdecl для объяснения типов C.
Здесь есть онлайн-интерфейс: http://cdecl.org/. Введите "int ** x" в текстовое поле и проверьте результат.
** - двойное разыменование. Если переменная является адресом адреса, результирующее выражение будет lvalue по адресу, хранящемуся в переменной *.
Это может означать разные вещи, если это часть объявления:
type ** variable будет означать, с другой стороны, указатель на указатель, то есть переменную, которая может содержать адрес другой переменной, которая также является указателем, но на этот раз переменной типа type
Это означает, что переменная разыменована дважды. Предположим, у вас есть указатель на указатель на char следующим образом:
char ** variable =...;
Если вы хотите получить доступ к значению, на которое указывает этот указатель, вы должны разыменовать его дважды:
** переменная
Это указатель на указатель. Вы можете использовать это, если хотите указать на array
или const char *
(string). Кроме того, в Objective-C с Cocoa это часто используется для указания на NSError*
.
Указатель на другой указатель
** - указатель на указатель. Они иногда используются для массивов строк.
его указатель на указатель. как в if * x означает, что он будет содержать адрес некоторой переменной, чем если бы я сказал m = & x, чем m, показано как int ** m