c - 堆栈分配的固定大小字符串数组
问题描述
我想构建一个恒定的、固定大小的字符串数组。如果必须,我可以使用 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 Str
alias constant char[4]
?
任何帮助表示赞赏。谢谢。
编辑:我发现 usingconst char *data[2] = {...}
有效。我想这与数组附带的几个约束有关,我仍在努力解决这些问题,并且大多数时候可以使用指针来解决。
解决方案
最简单的是:
char data[2][4] = {"abc", "def"};
推荐阅读
- python - django rest框架如何验证对象列表?
- javascript - this 关键字不适用于箭头函数
- vue.js - 带有数组的 Vuex v-model
- javascript - 如何编写一个函数来遍历打字稿中的列表?
- python - 有效地将具有嵌入式数组的字典列表转换为 DataFrame
- julia - 在 Julia 中将类型 Array{Union{Missing, Float64},1} 转换为 Array{Float64,1}
- python - TensorFlow 2.0 将不包含 TensorFlow Contrib 模块
- mysql - 如何使用 laravel 在博客文章的刀片模板中显示博客文章的多个标签?
- reactjs - ReactJS - 道具未传递给组件
- reactjs - 无法将 SVG 导入 Next.js