The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"начальная инициализация структуры с безразмерным массивом"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от Cont on 06-Май-09, 01:34 
Можно инициализировать безразмерный массив 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}};
Это уже не работает. Похоже, никак?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от const86 (ok) on 06-Май-09, 01:58 
Такие структуры положено "инициализировать" примерно так:
struct s *p = malloc(sizeof(*p) + sizeof(int) * 3);
p->i = 3;
p->v[0] = 1;
...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от Cont on 06-Май-09, 02:07 
Понимаю, но хочется сразу. :)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от Heretic (ok) on 06-Май-09, 12:39 
>Понимаю, но хочется сразу. :)

Не написано у вас на каком языке вы пишете, поэтому ориентируюсь на С++.
А почему STL не использовать? Vector позволяет это сделать, если не ошибаюсь. =)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от Cont on 06-Май-09, 17:49 
>Не написано у вас на каком языке вы пишете, поэтому ориентируюсь на
>С++.
>А почему STL не использовать? Vector позволяет это сделать, если не ошибаюсь.
>=)

C.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от chainik (??) on 06-Май-09, 20:03 
>[оверквотинг удален]
>  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.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "начальная инициализация структуры с безразмерным массивом"  +/
Сообщение от anonymous (??) on 11-Май-09, 18:43 
>  m[3]= 5;

UB

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру