首页 > 解决方案 > 堆栈分配的固定大小字符串数组

问题描述

我想构建一个恒定的、固定大小的字符串数组。如果必须,我可以使用 malloc,但我仍在学习 C,我想了解为什么下面的静态方法无效:

typedef char Str[4];

const Str a = "abc";
const Str b = "def";

const Str data[2] = {a, b};

海合会给了我

warning: initialization of ‘char’ from ‘const char *’ makes integer from pointer without a cast [-Wint-conversion]
   10 | const Str data[2] = {a, b};
      |                      ^```

error: initializer element is not computable at load time

为什么编译器说数组的第一个元素char不是const Stralias constant char[4]

任何帮助表示赞赏。谢谢。

编辑:我发现 usingconst char *data[2] = {...}有效。我想这与数组附带的几个约束有关,我仍在努力解决这些问题,并且大多数时候可以使用指针来解决。

标签: carraysstring

解决方案


最简单的是:

char data[2][4] = {"abc", "def"};

推荐阅读