更改多维char数组的值时出现“崩溃”

时间:2019-02-11 20:40:25

标签: c arduino

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"},
    },
};

我已经尽力想了一切,没有任何运气。

有人可以帮助我了解发生了什么,是否有更好的方法来实现这一目标?

2 个答案:

答案 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";