typedef struct{ //终端位置信息
char terminalCode[10]; //终端编码
uint8_t carStatus; //车辆状态
}TerminalLocationInfo_t;
TerminalLocationInfo_t *locationInfo;
locationInfo = (TerminalLocationInfo_t *)malloc(sizeof(TerminalLocationInfo_t));
locationInfo->terminalCode = "HRDevice01";
最后的locationInfo->terminalCode = "HRDevice01";为什么不行?
1."HRDevice01" 是一个字符串常量(实际上是 const char* 类型)
2.数组不可赋值:在 C 语言中,数组名是一个常量指针,不能作为左值(即不能出现在 = 的左边),这也是为什么 terminalCode 永远不为空的原因,即 if(terminalCode) 永远为真。
正确的赋值方法:
1.strcpy(locationInfo->terminalCode, "HRDevice01");
2.初始化时赋值
TerminalLocationInfo_t terminal = {
.terminalCode = "HRDevice01", // 只有在初始化时可以这样写
.carStatus = 0
};
浙公网安备 33010602011771号