C语言怎样将变量存入数组

单片机程序
u8 Adr=0xA5; //板子地址

int main(void)

Send_Data_Ser(Adr); //地址
Send_Data_Ser(0x03);
Send_Data_Ser(0x04);
Send_Data_Ser(0x00);
Send_Data_Ser(0x00);
Send_Data_Ser((Adr>>4)*17);
Send_Data_Ser((Adr&0x0F)*17);

这样就对串口发送了a5 03 04 00 00 AA 55,但是我现在的要求是想把这个7字节数据放入一个数组,而使用这样的方法,编译会有问题。
vu8 array[7]={Adr,0x03,0x04,0x00,0x00,(Adr>>4)*17,(Adr&0x0F)*17}; ,请问怎样才能将上面这7字节数据存入array[7]数组?

我猜是因为数组初始化的值必须都是编译期常量,而你的Adr是一个变量,跟它相关的(Adr>>4)*17,(Adr&0x0F)*17也都是变量,所以不能用来初始化数组。

可以把Adr定义为一个符号常量试试看,即

#define Adr (0xA5)

来代替

u8 Adr=0xA5;

追问

定义为常量就可以了,但是这个地址需要更改,也就是Adr必须是变量才行

追答

既然Adr必须是变量,不如直接写一个数组的初始化函数,

init_array(array, adr);

里面直接给每个元素赋值。。。

追问

请明示怎么写,本人新手,将这7个数据存入array[7]即可

追答u8 Adr = 0xA5;  //板子地址
void init_array(vu8* array, u8 Adr) {
 array[0] = Adr;
 array[1] = 0x03;
 array[2] = 0x04;
 array[3] = 0x00;
 array[4] = 0x00;
 array[5] = (Adr >> 4) * 17;
 array[6] = (Adr & 0x0F) * 17;
}
int main() {
 vu8 array[7];
 init_array(array, Adr);
 for (int i = 0; i < 7; i++) {
  Send_Data_Ser(array[i]);
 }
}

这样。。。

温馨提示:答案为网友推荐,仅供参考