c语言 - 我不明白这个代码数组和指针



我已经学会了指针和数组,但我不知道什么**或&&&&&&&&&&&&用于用于理解这一行的情况,我不确定这是什么。

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

我不确定第四行中还声明了什么也是我认为这些指针在列表中,我认为它们稍后将在该程序发送到此功能中。

char **creatArray(int n) 

函数类型中使用的(**(是什么?

*是指针类型, **是指针的指针类型,例如: int* p;,这意味着 p是指向int的指针类型,如果您需要指针类型对于此p指针,您可以执行以下定义:int** test = &p;此时testp的指针,其类型为int**

char *flag;这意味着标志是一个指针,它将保存字符数据类型的地址

char ** flag;这意味着标志是一个指针,它将保存"指针"的地址,该指针是指向字符数据类型的指针在此处输入图像描述

使用指针'*'时,可以创建一个数组时,当您分配多个字符的内存时。示例char *word = malloc(10 *sizeof(char((。您的话现在有10个字符的空间。当您要创建一个句子时,您需要多个单词,因此可以创建一个二维数组。您可以说char *句子= malloc(10 *sizeof(word((。

在C双指针中通常用于创建二维数组。

当您的功能创建一个大小n*n的新游戏板时,它将返回数组。例如,您致电char ** board = ** newarray(n(;

在C中,您可以创建一个像char数组一样的数组[],也可以创建一个类似的char *数组。这是一样的,因为C中的数组是指向数组的第一个元素的指针。但是问题是您无法从需要返回指针的功能中返回这样的数组。因此,char [] function((不起作用,您需要说char *function((。在您的示例中,您为板创建一个新的二维数组,并将指针返回数组的第一个元素(指针(,这就是为什么您调用函数char **而不是char [] [] []。