c - 在c中用数组作为变量的结构

标签 c arrays variables struct declare

我需要创建一个数据类型(在本例中为结构),并将数组作为属性。我有一个初始化函数,用于初始化此数据结构并为数组指定大小。现在的问题是在结构中声明数组。例如“int values[]”将要求我在括号中输入一个数字,例如 values[256]。初始化结构时应指定 Th3 256。有办法解决这个问题吗?

typedef struct 
{
        int values[];      //error here
        int numOfValues;
} Queue;

最佳答案

结构必须具有在编译时已知的固定大小。如果你想要一个可变长度的数组,你必须动态分配内存。

typedef struct {
    int *values;
    int numOfValues;
} Queue;

这样你只有指针存储在你的结构中。在结构的初始化中,您将指针分配给使用 malloc 分配的内存区域:

Queue q;
q.numOfValues = 256;
q.values = malloc(256 * sizeof(int));

请记住检查 NULL 指针的返回值和 free() 任何不再使用的动态分配内存。

关于c - 在c中用数组作为变量的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453584/

相关文章:

c++ - uint8_t 类型的 sscanf 占位符是什么?

c++ - 哪种方式更适合数组访问?

java - 在 if 条件中声明数组的解决方法

Python/Numpy - 使用变量从二维数组中提取二维子数组

c - 如何在 C 的套接字上发送/接收字符串数组

c - 空闲的指针未分配

arrays - 如何将&mut ndarray::Array传递给函数并对其执行按元素的算术运算?

c - 在 C 中,声明指针的正确语法是什么?

ios - 我想,陷入 for 循环中,不能使用循环外设置的变量吗?

c - 字符串的快速移动字符