【发布时间】:2016-07-27 11:36:59
【问题描述】:
我做错了什么。
这是来自 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
【问题讨论】:
-
修改字符串文字是未定义的行为。
-
@Notlikethat:在 C 中,字符串字面量 not 类型为
char const *。你在考虑 c++。 -
或者另一个:Modifying C string constants?(这是最后一个,我停下来搜索其他相同的问题)
-
@Olaf:没有什么“技术上”的。字符串文字没有类型
char const[]。如果他们确实,编译器可以捕捉到这种问题,但他们没有。这个很重要。教人们理解 C 的类型系统,否则他们将永远感到困惑。