gpt4 book ai didi

c - 在结构初始化时静态初始化结构内部的数组

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

我正在尝试使用静态分配的数组来构建环形缓冲区(要求,已经构建了动态的,后来决定转为静态的)。但是,我想要一个通用的环形缓冲区结构,可以在其中实例化不同大小的数组。我有这样的结构:

typedef struct measurementsRingBuffer
{
int maxSize;
int currentSize;
double measurementsArray[MEAS_ARRAY_CAPACITY];
} measurementsRingBuffer;

我通过以下方式实例化结构:

measurementsRingBuffer buffer = { .maxSize = MEAS_ARRAY_CAPACITY, .currentSize = 0 };

有什么方法可以在结构实例化时定义数组大小,而不是在结构本身中定义它?听起来不太可能,但我会试一试。

最佳答案

您可以使用指向数组的指针:

typedef struct measurementsRingBuffer
{
int maxSize;
int currentSize;
double* measurementsArray ;
} measurementsRingBuffer;

double small_array[10];
measurementsRingBuffer small = { .maxSize = 10 , .measurementsArray = small_array } ;

甚至是复合文字:

measurementsRingBuffer small = { .maxSize = 10 , .measurementsArray = ( double[10] ){ 0 } } ;

请注意,if 复合文字是在函数体之外定义的,它具有静态存储持续时间。

关于c - 在结构初始化时静态初始化结构内部的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181592/

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