C忽略字节分配?

C is ignoring byte assignment?

我做错了什么。

这是ARM代码(Keil5 IDE)中的一段代码:

uint8_t * at_ss_data = (uint8_t *)("\n\rAT$SS=AA AA\n\r");
at_ss_data[12] = 0;

但是当代码推送到ARM嵌入式板时,变量中的第12个索引(最后一个A)没有改变。

我的目标是将 at_ss_data 数组中的 AA AA 子字符串更改为 00 00

您不得修改字符串文字(即 undefined behavior)。您应该使用用字符串文字初始化的数组。

这样,您的代码应该是:

uint8_t at_ss_data[] = "\n\rAT$SS=AA AA\n\r";
at_ss_data[12] = 0;

at_ss_data 指向只读内存,你不能像这样更改字符串文字。此行为未定义。 相反,您可以尝试这样的事情:

uint8_t at_ss_data[] = "\n\rAT$SS=AA AA\n\r";

这个数组现在是可写的。