在使用atmega32進行AVR編程時,我無法爲數組賦值。我收到錯誤:我無法給數組賦值
Assignment of read-only str[i]
我在做什麼錯?
我的代碼是:
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
在使用atmega32進行AVR編程時,我無法爲數組賦值。我收到錯誤:我無法給數組賦值
Assignment of read-only str[i]
我在做什麼錯?
我的代碼是:
const char str[1000];
void Serial_tx(unsigned char ch)
{
for (i = 0; i < 10; i++)
{
str[i] = ch;
}
}
陣列被聲明const
,表明它不應該被修改。在微控制器中,這更有意義,因爲const
變量可以存儲在(有效)只讀存儲器(如Flash,EEPROM或ROM)中。
完全與傑裏同意...
剛需,如果你需要的數組爲const,那麼它應該被宣佈爲/這樣定義添加:
const char str[11]={'0','1','2','3','4','5','6','7','8','9',0 };
- 但那朵意味着你可以只在運行時讀取str []!
,如果你想改變運行str的內容比它不能是const:
char str[1000]={0};
- 這可以讓你閱讀運行
/寫訪問提防的是總規模你的非const變量,堆棧和C/C++語言引擎不能超過目標設備的RAM內存!
如果確實如此,那麼編譯器通常會拋出一些錯誤... 但並非總是(有時堆棧未完全佔)
哦!錯誤..釹我完成了.... :) –