root
数组的定义如上。它需要动态更改,但是我不确定如何定义每个char数组的最大大小?
读取值正好按预期工作,但是当尝试更改任何值时,微控制器崩溃。
char * charArray[][6][3] = {
{
{"2"}, //Size of 1st dimension
},
{//Section 1
{"5"}, //Size of each 2nd dimension
{"Option 1", "21", "0"},
{"Option 2", "493", "1"},
{"Option 3", "102", "0"},
{"Option 4", "531", "1"},
{"Option 5", "20", "0"},
},
{//Section 2
{"3"},
{"Something else", "50", "0"},
{"Any text can", "1654", "0"},
{"be in these", "1190", "0"},
},
};
我已经尽力想了一切,没有任何运气。
有人可以帮助我了解发生了什么,是否有更好的方法来实现这一目标?
答案 0 :(得分:1)
使用字符串文字定义和初始化指向char的指针时,就像这样...
char* p = "Hello World";
...您要在常量内存中分配字符数组 ,将其初始化为文字值,然后将char
指针p
指向该常量内存。您无权对其进行修改:p[1]='u';
不合法。
如果您显式定义数组而不是指针,则可以修改字符。
char p[] = "Hello World";
将其扩展为多维是留给读者的练习。
答案 1 :(得分:0)
蒂姆·兰德尔(Tim Randall)已经解释了发生了什么。如果您可以整体更改字符串而不是替换单个字符,则可以替换e。 g。
charArray[1][2][3][0] = '0';
使用
charArray[1][2][3] = "0";