Выделенный стеком массив строк фиксированного размера - PullRequest
0 голосов
/ 19 июня 2020

Я хочу построить массив строк постоянного фиксированного размера. Я мог бы использовать mallo c, если бы мне пришлось, но я все еще изучаю C и хочу понять, почему мой подход stati c ниже недействителен:

typedef char Str[4];

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

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

G CC дает мне

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 псевдоним constant char[4]?

Любая помощь приветствуется. Спасибо.

EDIT : Я обнаружил, что использование const char *data[2] = {...} работает. Я предполагаю, что это связано с несколькими ограничениями, связанными с массивами, с которыми я все еще борюсь и которые в большинстве случаев можно решить с помощью указателей.

1 Ответ

2 голосов
/ 19 июня 2020

Самый простой:

char data[2][4] = {"abc", "def"};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...