gpt4 book ai didi

无法将数组分配给结构属性

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

我刚刚学习 C,我在将数组分配给属性 (pulses) 时遇到了问题。

我有一个结构:

typedef struct irPulseSet
{
int pulseCount;
int pulses[][2];
} irPulseSet;

我用上面创建的 irPulseSet 类型创建了一个新变量,并定义了一个数组:

irPulseSet upButton;

upButton.pulseCount = 31;
int upButtonPulses[31][2] =
{
{ 0 , 120 },
{ 440 , 360 },
{ 440 , 340 },
{ 440 , 1120 },
{ 420 , 380 },
{ 420 , 360 },
{ 400 , 1140 },
{ 420 , 1120 },
{ 420 , 380 },
{ 420 , 1140 },
{ 420 , 1120 },
{ 440 , 340 },
{ 440 , 360 },
{ 440 , 1120 },
{ 440 , 1120 },
{ 420 , 1120 },
{ 400 , 1140 },
{ 420 , 360 },
{ 440 , 340 },
{ 440 , 360 },
{ 440 , 1140 },
{ 440 , 360 },
{ 440 , 340 },
{ 440 , 380 },
{ 420 , 360 },
{ 440 , 1120 },
{ 440 , 1120 },
{ 440 , 1120 },
{ 440 , 27400 },
{ 7160 , 1500 },
{ 0 , 0 }
};

然后我将该数组分配给 irPulseSet 结构中的一个属性。

upButton.pulses = upButtonPulses;

但是当我编译时,我得到了错误:

invalid use of flexible array member

我在这里做错了什么?

最佳答案

在拥有动态分配的灵活数组成员之前,您必须将结构中 pulses 成员的类型更改为指向二维数组的指针。

typedef struct irPulseSet
{
int pulseCount;
int (*pulses)[2]; //pointer to a 2d array

} irPulseSet;

并设置你做同样的成员:

upButton.pulses = upButtonPulses;

或者更聪明的初始化结构的方法

irPulseSet upButton = { 31 , upButtonPulses } ;

关于无法将数组分配给结构属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23171730/

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