在使用atmega32的AVR编程中,我无法为数组赋值。我收到了错误:
指定只读str [i]
我做错了什么?
我的代码是:
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
答案 0 :(得分:3)
数组声明为const
,表示不应修改它。在微控制器上,这更有意义,因为const
变量可以存储在(有效)只读存储器(例如闪存,EEPROM或ROM)中。
答案 1 :(得分:0)
完全同意杰里......
只需要添加如果你需要数组作为const然后它应该声明/定义如下:
const char str[11]={'0','1','2','3','4','5','6','7','8','9',0 };
- 但是这意味着你只能在运行时读取str []!
如果你想在运行时更改str的内容而不是const:
char str[1000]={0};
- 这允许您在运行时读/写访问
请注意非常量变量,堆栈和C / C ++语言引擎的总大小不能超过目标设备RAM内存!!!
如果确实如此,编译器通常会抛出一些错误......
但并不总是(有时堆栈没有完全考虑)