c - C中的结构定义

标签 c arrays structure definition

我想按以下方式定义一个结构:

typedef struct Info_s
{
 uint8   Size;
 uint8   Address;
 uint8   Pattern[Size];    
}Info_t;

正如您所注意到的,数组 Pattern 的大小是“Size”,它首先在同一结构中声明。

对吗?

最佳答案

声明为结构字段的数组必须有一个整数常量表达式作为其大小,或者是一个没有大小的灵活数组成员 (uint8 Pattern[ ];)。您的变体两者都不是。

如果你的数组大小是一个运行时值,你有两个选择

  1. 灵活的数组成员 uint8 Pattern[];,这将导致一个“平面”结构。必须使用 malloc 手动分配适当的内存量以容纳具有所需长度数组的整个结构。

  2. 指针成员 uint8 *Pattern;,在这种情况下,您的结构将变为两级结构。结构本身的内存和数组的内存通常会成为独立分配的两个单独的内存块。

灵活的数组成员通常是一个更好的主意(并且符合您明显的原始意图),除非您有一些其他要求会阻止该方法。

关于c - C中的结构定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190662/

相关文章:

c - 在编译时在所有 .c 源文件中包含 #define

c - C 编程中的 boolean 值

c - 为什么我可以在函数内而不是 main 中增加 char 数组位置

javascript - 哪个是确保拆分后最终得到大于 1 的数组的正确方法?

c++ - 静态结构 - 定义、对象、成员

c - 如何从 C 中具有多个参数的函数调用单个参数?

javascript - 使用 JavaScript 迭代器的困难

javascript - 对数组中的值使用 let 和 const 时发生 Linter 错误

html - 填充和边距不起作用

c - 如何在 vector 中保存结构并用C语言打印出这些值?