Использование инициализации массива в массиве кучи - PullRequest
1 голос
/ 19 апреля 2019

Какова логическая цель предотвращения использования нотации инициализации массива ({1,2,3...}) в динамической памяти? Похоже, что функциональность, которая была бы добавлена ​​к стандарту уже сейчас ...

Не было бы смысла, если бы это было возможно:

int *list;
list = malloc(sizeof(*list)*3);
*list = {1, 2, 3}; // error

Но вместо этого нужно сделать следующее:

int *list;
list = malloc(sizeof(*list)*3);
list[0] = 1;
list[1] = 2;
list[2] = 3;

Я что-то упустил? Нет ли простого способа предварительно упорядочить массив?

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Это просто синтаксис. Вы изобрели синтаксический сахар , который не включен в стандартный язык.

Они хотели сохранить язык C как можно более простым, вопреки философии других языков, где они добавили много синтаксиса вокруг ядра.

1 голос
/ 19 апреля 2019

Я бы использовал составные литералы вместе с memcpy для инициализации.

memcpy(list,(int[]){1, 2, 3},3*sizeof(int)); // error

или просто без malloc' ing.

list = (int []){1,2,3};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...