gpt4 book ai didi

c - 将指针传递给 C 中的二维指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:58 29 4
gpt4 key购买 nike

我已经看到了关于这个主题的其他一些答案,但对它们的理解还不足以解决我的问题。我有一个指向 char 的二维指针数组,我想将其传递给函数。

如果声明数组:char *params[50][50];(50随便挑)

函数原型(prototype)为:void test (char ***results);

我将如何调用该函数?我尝试的一切都以不兼容的指针警告告终

此外,在函数内部引用数组成员的最正确方法是什么?是不是很简单:results[x][y];

谢谢

最佳答案

你不能,指向指针的指针和指向数组的指针是不同的东西。

void test (char *results[50][50]);
void test (char *results[][50]);
void test (char *(*results)[50]);

都是您正在寻找的函数的等价原型(prototype)。

补充:如果你想对维度长度不同的数组使用相同的函数,你必须使用 VLA(可变长度数组)作为函数参数:

void test (size_t n, char *results[n][n]);
void test (size_t n, char *results[][n]);
void test (size_t n, char *(*results)[n]);

这仅在您有符合 C99 的编译器时才有效。

请注意,大小参数出现在数组之前,因此它在那里是已知的。

此外,您不必声明数组本身具有可变长度即可将此功能用于函数参数。但是,如果您小心不要在堆栈上分配大矩阵,否则您可能很容易出现计算器溢出。

关于c - 将指针传递给 C 中的二维指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872901/

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