Можно инициализировать безразмерный массив int a[]={1,2,3};Можно инициализировать структуру с массивом заданной размерности
struct s{
int i;
int a[3];
} x={3,{1,2,3}};Но как быть, если размер массива не указан?
struct s{
int i;
int a[];
} x={3,{1,2,3}};
Это уже не работает. Похоже, никак?
Такие структуры положено "инициализировать" примерно так:
struct s *p = malloc(sizeof(*p) + sizeof(int) * 3);
p->i = 3;
p->v[0] = 1;
...
Понимаю, но хочется сразу. :)
>Понимаю, но хочется сразу. :)Не написано у вас на каком языке вы пишете, поэтому ориентируюсь на С++.
А почему STL не использовать? Vector позволяет это сделать, если не ошибаюсь. =)
>Не написано у вас на каком языке вы пишете, поэтому ориентируюсь на
>С++.
>А почему STL не использовать? Vector позволяет это сделать, если не ошибаюсь.
>=)C.
>[оверквотинг удален]
> int i;
> int a[3];
>} x={3,{1,2,3}};
>
>Но как быть, если размер массива не указан?
>struct s{
> int i;
> int a[];
>} x={3,{1,2,3}};
>Это уже не работает. Похоже, никак?Никак. Иначе - это уже не C
int a[]={1,2,3}; инициализирует массив из ТРЕХ элементов.
#include <stdio.h>
main() {
int m[]= {1,2,3};
int v = 10;
m[3]= 5;
printf( "%d\n", v);
}
Программа, очевично, выдает 5.
> m[3]= 5;UB