C ';崩溃';更改多维字符数组的值时
数组的定义如上所述。它需要动态更改,但我不确定如何定义每个字符数组的最大大小 读取值完全按照预期工作,但当试图更改任何值时,微控制器崩溃C ';崩溃';更改多维字符数组的值时,c,arduino,C,Arduino,数组的定义如上所述。它需要动态更改,但我不确定如何定义每个字符数组的最大大小 读取值完全按照预期工作,但当试图更改任何值时,微控制器崩溃 char * charArray[][6][3] = { { {"2"}, //Size of 1st dimension }, {//Section 1 {"5"}, //Size of each 2nd dimension {"Option 1", "21", "0"},
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"},
},
};
我已经尝试了我能想到的一切,但没有任何运气
有谁能帮助我了解发生了什么,以及是否有更好的方法来实现这一点?当您使用字符串文本定义和初始化指向char的指针时,就像这样
charArray[1][2][3][0] = '0';
。。。您正在常量内存中分配一个字符数组,将其初始化为文本值,并将char
指针p
指向该常量内存。不允许修改:p[1]='u'代码>是不合法的
如果显式定义数组而不是指针,则可以修改字符
char* p = "Hello World";
将其扩展为多维是留给读者的练习。蒂姆·兰德尔已经解释了发生了什么。如果您同意将字符串作为一个整体进行更改,而不是替换单个字符,则可以替换为e。g
char p[] = "Hello World";
与
您尝试执行的操作的可能重复本质上归结为“5”[0]=“2”
。你认为这有意义吗?
charArray[1][2][3][0] = '0';
charArray[1][2][3] = "0";