C 我不理解这个代码数组和指针

C 我不理解这个代码数组和指针,c,pointers,C,Pointers,我已经学习了指针和数组,但我不知道**或&&用于什么,当我试图理解这行时,我不确定这是什么 int main() { srand(time(NULL)); int n, m, option, row, col, flagCount = 0; char **flags, **board; 我不确定第四行声明了什么,还有列表中的指针,我想它们是稍后发送给这个函数的程序中的指针 char **creatArray(int n) 这**在函数类型中的用途是什么?当使用指针“

我已经学习了指针和数组,但我不知道**或&&用于什么,当我试图理解这行时,我不确定这是什么

int main() {
    srand(time(NULL));
    int n, m, option, row, col, flagCount = 0;
    char **flags, **board;
我不确定第四行声明了什么,还有列表中的指针,我想它们是稍后发送给这个函数的程序中的指针

char **creatArray(int n) 

这**在函数类型中的用途是什么?

当使用指针“*”时,您可以在为多个字符分配内存时创建一个数组。示例char*word=malloc10*sizeofchar。你的单词现在有10个字符的空格。当你想要创建一个句子时,你需要多个单词,这样你就可以创建一个二维数组。你可以说char*句子=malloc10*sizeofword

在c语言中,双指针通常用于创建二维数组

当您的函数创建一个大小为n*n的新游戏板时,它将返回数组。 例如,您调用char**board=**newArrayn

在c语言中,您可以创建一个类似char array[]的数组,也可以创建一个类似char*的数组。这是相同的,因为C中的数组是指向数组第一个元素的指针。但问题是不能从需要返回指针的函数中返回这样的数组。所以char[]函数不起作用,你需要说char*函数。在您的示例中,就是这样,您为电路板创建了一个新的二维数组,并将指针返回到数组的第一个元素指针,这就是您调用函数char**而不是char[][]的原因。

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

字符**标志; 这意味着该标志是一个指针,它将保存一个指针的地址,该指针是指向字符数据类型的指针
*是指针类型,**是指向指针的指针类型,例如:int*p;,这意味着p是指向int的指针类型,如果需要指向该p指针的指针类型,可以执行以下定义:int**test=&p;此时,test是指向p的指针,其类型为int**。

我可能会编辑我的帖子,但我不能道歉,它告诉我,我的网络中有类似的垃圾邮件。我知道它基本上用于一个游戏的棋盘,但我更不明白为什么它在函数名中。当你用这个函数创建一个游戏棋盘时,我认为你通过参数n来创建一个n*n大小的棋盘。因此,您的函数将创建一个新的数组/游戏板,并将此游戏板作为二维数组返回。因此,代码应该看起来像char**board=createArrayYes,这与我估计的差不多,只是这是线路板=createArrayN;那么为什么这里没有**?为什么我需要一个指向指针数组的指针来制作棋盘游戏呢。这不是我的代码,我只是需要帮助理解它,但为什么现在使用普通的二维数组?@alk我认为正确的语法是char**board=newArrayn。如果为false,请更正函数名如何?@yadinmeretzki:char**createArray返回指向char的指针。