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