c - 更改多维字符数组的值时“崩溃”

标签 c arduino

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

数组的定义如上。它需要动态更改,但我不确定如何定义每个字符数组的最大大小?

读取值完全按照预期工作,但是当尝试更改任何值时,微 Controller 崩溃。

charArray[1][2][3][0] = '0';

我已经尝试了我能想到的一切,但没有任何运气。

任何人都可以帮助我了解正在发生的事情,以及是否有更好的方法来实现这一目标?

最佳答案

当您使用字符串文字定义并初始化指向字符的指针时,如下所示......

char* p = "Hello World";

...您正在常量内存中分配一个字符数组,将其初始化为文字值,然后指向char指针p 在那个常量内存中。您不得修改它:p[1]='u'; 不合法。

如果显式定义数组而不是指针,则可以修改字符。

char p[] = "Hello World";

将其扩展到多维是留给读者的练习。

关于c - 更改多维字符数组的值时“崩溃”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54638788/

相关文章:

c - 如何在 Mac 上设置 Code::Blocks 的工作目录?

c++ - Arduino Serial 是在哪里创建的?

c++ - 为什么 argv 不起作用?

c - 打印随机数而不是我的变量

C++:可以在多个文件中调用静态变量吗?

c - 奇怪的变量行为 - Arduino Uno rev 3

C++ 字节数组初始化 - 出了什么问题?

arduino - 向 Arduino 中存储为字符串的数字发送消息

c - 如何为指定的子进程分配一个CPU?

c - 为什么 ungetc 在某些字符上会失败?