Что означает ** в 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