我无法为数组赋值

时间:2013-06-29 11:20:53

标签: atmel

在使用atmega32的AVR编程中,我无法为数组赋值。我收到了错误:

  

指定只读str [i]

我做错了什么?

我的代码是:

const char str[1000];
void Serial_tx(unsigned char ch)
{
  for (i = 0; i < 10; i++)
  {
    str[i] = ch;
  }
}

2 个答案:

答案 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内存!!!
如果确实如此,编译器通常会抛出一些错误...... 但并不总是(有时堆栈没有完全考虑)