c - 填充结构数组的数组?

标签 c arrays struct

我想声明一个结构,然后声明这些结构的数组,然后声明这些结构的数组的数组。前两部分还好,第三部分我有点挣扎。

当我尝试将数组分配给 not_trace_groups 时,我的代码将无法编译,并且我不知道如何正确执行此操作。

typedef struct trace
{
    uint32_t upstream_pin;
    uint32_t dnstream_pin;
    uint32_t led_pin;
}trace;

trace all_traces[NUM_TRACES] = {{GPIO_Pin_3, GPIO_Pin_7, GPIO_Pin_0},
                            {GPIO_Pin_4, GPIO_Pin_6 ,  GPIO_Pin_1},
                            {GPIO_Pin_5,  GPIO_Pin_5 , PIO_Pin_1},
                            {GPIO_Pin_6,  GPIO_Pin_4 , PIO_Pin_0},
                            {GPIO_Pin_7,  GPIO_Pin_3 , GPIO_Pin_1},
                            {GPIO_Pin_0,  GPIO_Pin_15, GPIO_Pin_2}};

trace not_trace_groups[NUM_TRACES][NUM_TRACES];

void main()
{
    for (int i = 0; i < NUM_TRACES; i++)
    {
        not_trace_group[i] = {all_traces[i], all_traces[(i+1)%NUM_TRACES], all_traces[(i+2)%NUM_TRACES], all_traces[(i+3)%NUM_TRACES], all_traces[(i+4)%NUM_TRACES], all_traces[(i+5)%NUM_TRACES])};
    }
    while(1 == 1){
        for (int i = 0; i < NUM_TRACES; i++)
        {
            trace_test(not_trace_group[i]);
        }
}

void trace_test(trace cur_trace, trace not_trace1, trace not_trace2, trace not_trace3, trace not_trace4, trace not_trace5)
{
 // do some stuff
}

我收到的错误是:

 error: expected expression before '{' token
         not_trace_group[i] = {all_traces[i], all_traces[(i+1)%NUM_TRACES], all_traces[(i+2)%NUM_TRACES], all_traces[(i+3)%NUM_TRACES], all_traces[(i+4)%NUM_TRACES], all_traces[(i+5)%NUM_TRACES])};

我想也许我无法分配给数组的第二层,所以我尝试了这个:

trace not_trace_groups[NUM_TRACES];

但这给出了相同的错误

最佳答案

您不能使用 -

not_trace_group[i] = {all_traces[i], all_traces[(i+1)%NUM_TRACES], all_traces[(i+2)%NUM_TRACES], all_traces[(i+3)%NUM_TRACES], all_traces[(i+4)%NUM_TRACES], all_traces[(i+5)%NUM_TRACES])};

因为这是只能在初始化时使用的赋值。您不能像这样为 not_trace_groups[i] 赋值。您需要做的就是使用 2 个 for 循环并获取精确的元素 not_trace_group[i][j] 并为其赋值。 例如,在这里您可以分配类似的值 -

not_trace_group[0][0] = all_traces[0];

关于c - 填充结构数组的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157117/

相关文章:

c - 填充结构数组并在堆上分配内存

c - "hashLink"之前的预期表达式

struct - Julia:结构和方法构造函数中的函数

c++ - C/C++ - 将 24 位有符号整数转换为 float

c - 有没有更好的方法来管理C中的文件指针?

c++ - 内联函数实际上做了什么?

C:下标值既不是数组也不是指针

c - 如何从字符串文字创建多维数组

python - 基于列表在python numpy中排列数据的最快方法

C 结构体内存存储顺序