Я не понимаю этот код массивов и указателей - PullRequest
0 голосов
/ 12 мая 2019

Я уже выучил указатели и массивы, но я не знаю, для чего используется ** или &&, и когда пытаюсь понять эту строку, я не уверен, что это такое.

int main() {
    srand(time(NULL));
    int n, m, option, row, col, flagCount = 0;
    char **flags, **board;

Я не уверен, что объявляется в 4-й строке, а также указатели в списке. Я думаю, что они находятся позже в программе, отправляемой этой функции.

char **creatArray(int n) 

для чего используется это (**) в типе функции?

Ответы [ 3 ]

2 голосов
/ 12 мая 2019

* - это тип указателя, ** - это тип указателя на указатель, например: int* p;, что означает, что p - это тип указателя, указывающий на int, и если вам нужно Тип указателя на этот p указатель, вы можете сделать следующее определение: int** test = &p; В этот момент test является указателем на p, его тип int**.

1 голос
/ 12 мая 2019

символ * флаг;это означает, что flag является указателем, который будет содержать адрес символьного типа данных

char ** flag;это означает, что flag является указателем, который будет содержать адрес «POINTER», который является указателем на символьный тип данных введите описание изображения здесь

0 голосов
/ 12 мая 2019

Когда вы используете указатель '*', вы можете создать, например, массив при выделении памяти для нескольких символов. Пример char * word = malloc (10 * sizeof (char)). Ваше слово теперь имеет место для 10 символов. Когда вы хотите создать предложение, вам нужно несколько слов, чтобы вы могли создать двумерный массив. Вы можете сказать char * предложение = malloc (10 * sizeof (слово)).

В c двойной указатель часто используется для создания двумерного массива.

Когда ваша функция создаст новую игровую доску размером n * n, она вернет массив. Например, вы вызываете char ** board = ** newArray (n);

В c вы можете создать массив типа char array [] или создать массив типа char *. Это то же самое, потому что массив в C является указателем на первый элемент массива. Но проблема в том, что вы не можете вернуть такой массив из функции, которая вам нужна для возврата указателя. Так что функция char [] () не работает, нужно сказать char * function (). И в этом случае в вашем примере вы создаете новый двумерный массив для своей платы и возвращаете указатель на первый элемент (указатель) массива, поэтому вы вызываете свою функцию char **, а не char [] [].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...