我正在努力解决这种语法:我有一些数组结构:
struct Msg {
uint8_t Data[DATA_SIZE];
};
struct Msg Msg_Buff[NUM_MESSAGES], Temp_Buff[NUM_MESSAGES];
Run Code Online (Sandbox Code Playgroud)
并想要将一个数组从一个结构复制到另一个结构。
这:
*Temp_Buff[Other_Indx].Data = *Msg_Buff[This_Indx].Data;
Run Code Online (Sandbox Code Playgroud)
仅复制数组的第一个元素,而不复制整个数组。我究竟做错了什么?
很大程度上由于历史原因,C 数组无法赋值。
如果数组是结构中的唯一成员,则可以简单地分配结构而不是数组:Temp_Buff[Other_Indx] = Msg_Buff[This_Indx];。
否则,复制整个数组:memcpy(Temp_Buff[Other_Indx].Data, Msg_Buff[This_Indx].Data, sizeof Temp_Buff[Other_Indx].Data);. 该memcpy例程在 中声明<string.h>。
请注意, 的使用sizeof依赖于其操作数 ,Temp_Buff[Other_Indx].Data它是已知大小的实际数组。如果是指针,则需要以其他方式提供大小,例如NumberOfElements * sizeof *Temp_Buff[Other_Indx].Data.
memcpy如果您只想复制一个成员,则需要使用它。
#define DATA_SIZE 100
#define NUM_MESSAGES 200
struct Msg {
uint8_t Data[DATA_SIZE];
};
struct Msg Msg_Buff[NUM_MESSAGES], Temp_Buff[NUM_MESSAGES];
void copyDataAtIndex(size_t index)
{
memcpy(Temp_Buff[index].Data, Msg_Buff[index].Data, sizeof(Temp_Buff[index].Data));
}
Run Code Online (Sandbox Code Playgroud)
如果你想复制整个结构 - 只需分配:
void copyStructAtIndex(size_t index)
{
Temp_Buff[index] = Msg_Buff[index];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |