gpt4 book ai didi

c - 在 C 中传递二维数组,如 main 的 argv

转载 作者:太空狗 更新时间:2023-10-29 15:16:24 29 4
gpt4 key购买 nike

我正在学习将二维数组传递给 C 中的函数,并了解到我可以在函数中接收二维数组,如下所示:

  1. void test(char a[5][10])
  2. void test(char (*a)[10])

以上声明对我有用,但查看函数 main 的 **argv 参数时,我想将我的函数更改为 void test(char **a)。但这不能正常工作。我不明白为什么。请解释。

这是我的代码

#include<stdio.h>

int main(int argc, char **argv){
char multi[5][10] = {
{'0','0','2','3','4','5','6','7','1','9'},
{'a','b','c','d','e','f','g','h','i','j'},
{'A','B','C','D','E','F','G','H','I','J'},
{'9','8','7','6','5','4','3','2','1','0'},
{'J','I','H','G','F','E','D','C','B','A'}
};
test(multi);
return 0;
}

void test(char (*a)[10]) // void test(char **a) does not work
{
printf("\n a[2][1] is: %d",*(*(a + 2)+1));
}

最佳答案

传递给函数的数组名称将衰减为其第一个元素的地址值,其类型将是指向该元素类型的指针。由于 multi[0] 的类型是 char[10],因此 multi 将衰减 指向 char[10]< 的指针.

main() 在它的第二个参数中接收一个指向 char 的指针数组,这就是为什么 argv 可以是 char * *argvchar *argv[]

关于c - 在 C 中传递二维数组,如 main 的 argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17563907/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com