gpt4 book ai didi

c - 如何声明一个函数,该函数的结构包含一个数组,其大小由 argv 确定,作为参数?

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

我有一个结构 dt,它包含一个内部数组,其大小由 argv 确定。我需要将此结构提供给函数 func,因此我尝试使用 void 指针参数声明它,但编译器提示它在一天结束时不是 void。这是代码:

#include <stdio.h>
#include <string.h>

void func(void *);

int main(int argc, char *argv[])
{
int RETSIZE;
sscanf(*++argv, "%d", &RETSIZE);
struct
{
char name[6];
char ret[RETSIZE];
} dt[100];

func(dt);
}

void func(void *dt)
{
dt->ret[2] = 3;
}

如何以及在何处声明结构 dt 和函数 func 以便它运行?

最佳答案

如果你想在两个(或更多)函数中使用一个结构,你需要在全局范围内定义它,这样两个函数都可以访问它。根本没有办法解决它。

至于数组,在这种情况下不可能使用变长数组。您需要使用 flexible array member或使用指针。这两者都需要堆的动态分配。您还需要将数组中的元素数量保留为结构中的成员。

关于c - 如何声明一个函数,该函数的结构包含一个数组,其大小由 argv 确定,作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41011554/

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