Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Инициализация структуры 
V
    Опции темы
yngwie19
Дата 30.4.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Здравствуйте у меня вопрос по поводу инициализации структуры при ее объявлении:
Код

struct
{
    int n;
    char s;
}arr[] = {12,'a',15,'b'};

Правильно ли я инициализирую структуру? или надо так:
Код

struct
{
    int n;
    char s;
}arr[] = {{12,'a'},{15,'b'}};

как правильно? в первом случае программа сама распределяет по элементам массива структуры arr, а во  втором мы ей помогаем 
PM MAIL   Вверх
azesmcar
Дата 30.4.2009, 11:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



yngwie19
оба вариант правильные, только работают они по разному.

С примером думаю будет понятнее

Код

int main()
{
    const int n = 2;
    struct
    {
        int n;
        char s;
        int k;
    }arr[n] = {{12,'a'},{15,'b'}};

    for (int i = 0; i < 2; ++i)
    {
        std::cout << arr[i].k << std::endl;
    }
}

выведет
0
0

Код

int main()
{
    const int n = 2;
    struct
    {
        int n;
        char s;
        int k;
    }arr[n] = {12,'a',15,'b'};

    for (int i = 0; i < 2; ++i)
    {
        std::cout << arr[i].k << std::endl;
    }
}

15
0

Добавлено @ 11:25
Если в словах - то так

Код

arr[n] = {{12,'a'},{15,'b'}};

этот вариант проинициализирует структуру значениями 12, а, а int k оставит проинициализирует по умолчанию (Т()).

Код

arr[] = {12,'a',15,'b'};

а этот вариант проинициализирует структуру значениями 12, а, 15, т.е. воспримет 15 (котоая предназначалась для следующей структуры) как значение для int k.

Добавлено @ 11:27
Добавлю также цитату из стандарта
user posted image


Это сообщение отредактировал(а) azesmcar - 30.4.2009, 12:45
PM   Вверх
yngwie19
Дата 30.4.2009, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



azesmcar, Спасибо
PM MAIL   Вверх
azesmcar
Дата 30.4.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



yngwie19

Пожалуйста.
Цитата

arr[n] = {{12,'a'},{15,'b'}};
arr[n] = {{12,'a'},{15,'b'}};

один и тот же вариант скопировал smile 
(исправил)
PM   Вверх
bsa
Дата 30.4.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
yngwie19, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.