gpt4 book ai didi

c - C 中具有动态大小的用户定义类型

转载 作者:太空狗 更新时间:2023-10-29 14:54:03 28 4
gpt4 key购买 nike

我想定义一个新的数据类型,由一个数组组成,数组的大小由用户输入。例如,如果用户输入 128,那么我的程序应该创建一个新类型,它基本上是一个 16 字节的数组。这个结构的定义需要是全局的,因为我将在我的程序中使用该类型。有必要为此结构设置动态大小,因为最终我将拥有一个由该类型变量填充的巨大数据库。

我现在的代码是:

struct user_defined_integer;
.
.
.
void def_type(int num_bits)
{
extern struct user_defined_integer
{
int val[num_bits/sizeof(int)];
};

return;

}

(这是行不通的)

我发现最接近我的问题的是: I need to make a global array in C with a size inputted by the user(这没有帮助)

有没有办法做到这一点,以便在整个文件中识别我的结构?

最佳答案

做的时候:

extern struct user_defined_integer 
{
int val[num_bits/sizeof(int)];
};

你应该得到警告:

warning: useless storage class specifier in empty declaration 

因为你有一个空的声明。 extern 不适用于 user_defined_integer,而是应用于它之后的变量。其次,这无论如何都行不通,因为包含可变长度数组的结构不能有任何链接。

error: object with variably modified type must have no linkage

即便如此,可变长度数组还是在声明时分配存储空间。您应该改为选择动态内存。

#include <stdlib.h>

typedef struct
{
int num_bits;
int* val;
} user_defined_integer;

void set_val(user_defined_integer* udi, int num_bits)
{
udi->num_bits = num_bits;
udi->val = malloc(num_bits/sizeof(int));
}

关于c - C 中具有动态大小的用户定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499241/

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