gpt4 book ai didi

c - 如何从 C 中的函数返回二维数组

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

有人可以帮助我如何在 main 函数上传递二维数组吗?我在网上搜索了很多如何返回数组但指针没有帮助我。

#include <stdio.h>
#include <stdlib.h>

char fillcards(void)
{
int i,j;
srand(8490);
char P[1001][16];
for(i=0; i<1000; i++)
{
for(j=0; j<15; j++)
{
char randomletter="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand() % 36];
P[i][j]=randomletter;
}
}

return P;
}


int main(int argc, char *argv[])
{

... // char P[.][.]=fillcards
printf("%s\n", P[1]); // Just to test

system("PAUSE");
return 0;
}

最佳答案

你有两个问题:拳头是你告诉编译器函数应该返回一个字符,但随后返回一个数组。

第二个问题是您试图返回一个局部变量,该变量将在函数返回后立即消失。

第一个问题的解决方案取决于您为第二个问题选择的解决方案。第二个问题的解决方案是通过将其设为 static 来确保返回的变量不会消失,或者使用动态内存分配为其创建内存。

如果你想让数组成为static,你必须记住数组会衰减到指向它们第一个元素的指针,所以一旦P衰减了,你就有了一些东西是 char (*)[16] 类型。

如果您使用动态内存分配,这在某种程度上取决于您将 P 声明为什么,但最常见的是使用指向指针的指针,即 char ** ,这就是您应该用作返回类型的内容。

关于c - 如何从 C 中的函数返回二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554547/

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