我不明白这个代码数组和指针

时间:2019-05-12 13:21:16

标签: c pointers

我已经学习了指针和数组,但是我不知道**或&&的用途,并且在尝试理解这一行时不确定该是什么。

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

我不确定第四行中声明了什么,也不确定列表中的那些指针,我认为它们稍后将在程序中发送给该函数。

char **creatArray(int n) 

此(**)在函数类型中用作什么?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

*是指针类型,**是指向指针的指针类型,例如:int* p;,表示p是指向{ {1}},并且如果您需要指向该int指针的指针类型,则可以执行以下定义:p此时int** test = &p;是指向test的指针,其类型为p

答案 2 :(得分:-1)

使用指针“ *”时,可以为多个字符分配内存时创建一个数组。示例char * word = malloc(10 * sizeof(char))。您的单词现在可以容纳10个字符。当您要创建一个句子时,您需要多个单词,以便创建一个二维数组。您可以说char *句子= malloc(10 * sizeof(word))。

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

当您的函数创建大小为n * n的新游戏板时,它将返回数组。 因此,例如,您调用char ** board = ** newArray(n);

在c中,您可以创建类似char array []的数组,也可以创建类似char * array的数组。这是相同的,因为C中的数组是指向数组第一个元素的指针。但是问题是您无法从需要返回指针的函数中返回这样的数组。因此char [] function()无法正常工作,您需要说出char * function()。在您的示例中就是这种情况,您为电路板创建了一个新的二维数组,并将指针返回到该数组的第一个元素(指针),这就是为什么调用函数char **而不是char [] []的原因。