Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lord007
0 / 0 / 1
Регистрация: 06.11.2014
Сообщений: 156
1

О структурах. Как в массив записываются элементы разных типов без указания собственно типа?

23.07.2017, 21:34. Просмотров 189. Ответов 5

Имеется следующая программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h";
#include <iostream>
#include <string>
 
struct Alphabet {
    int i;
    char c;
}sA[5]{ 1,'a',2,'b',3,'c',4,'d',5,'e' }, *psA = &sA[0]; Ссылается на 0 элемент массива
 
using namespace std;
int main()
{
    for (int k = 0; k<4; k++) {
        psA++; обновляет индекс через указатель
        cout << psA->c;
    }
    cin.get();
}
Она выводит bcde. Вопрос как в массив записываются элементы разных типов без указания собственно типа?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2017, 21:34
Ответы с готовыми решениями:

добавление в контейнер без указания типов данных?
Привет, у меня проблема. Сразу перейду к коду: template &lt;class structType&gt; class...

Можно ли заменить обращение к Union без указания типа переменной?
Можно ли заменить обращение к Union без указания типа переменной?(т.е. без .i .f .str, а просто к...

Динамический массив без явного указания размера
Самый праздный вопрос, наверное. И, вроде бы, я даже знаю ответ, но все-таки сомневаюсь. В С++...

Передать в функцию массив без указания его размера
Вопрос . какой массив мы можем передавать в функцию без указания элемента ?

Многомерный символьный(строковый) массив без явного указания разрядности
В общем нужно прям в коде создать массив, к примеру: char Mmas=&quot;Первая строка. Вторая строка....

5
zss
Модератор
Эксперт С++
7394 / 6790 / 4295
Регистрация: 18.12.2011
Сообщений: 17,933
Завершенные тесты: 1
23.07.2017, 21:53 2
Как это без указания?
Указано же, что первый элемент (int i) - целое число, второй (char c) - символ.
Т.о. нулевой элемент массива sA содержит 1,'a',
первый - 2,'b', и т.д.
0
Lord007
0 / 0 / 1
Регистрация: 06.11.2014
Сообщений: 156
23.07.2017, 22:02  [ТС] 3
zss, то есть массив следующий сразу за объявленной структурой сразу принимает типы значений ее переменных?
0
zss
Модератор
Эксперт С++
7394 / 6790 / 4295
Регистрация: 18.12.2011
Сообщений: 17,933
Завершенные тесты: 1
24.07.2017, 07:43 4
Это не массив, а список инициализации.
Кстати, там пропущен знак равно:
C++
1
2
3
4
struct Alphabet {
    int i;
    char c;
}sA[5]={ 1,'a',2,'b',3,'c',4,'d',5,'e' }, *psA = &sA[0];
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
24.07.2017, 08:01 5
Цитата Сообщение от zss Посмотреть сообщение
Кстати, там пропущен знак равно
начиная с с++11 можно инициализировать и так.
1
nonedark2008
1096 / 817 / 236
Регистрация: 28.07.2012
Сообщений: 2,287
24.07.2017, 09:44 6
Цитата Сообщение от Lord007 Посмотреть сообщение
Вопрос как в массив записываются элементы разных типов без указания собственно типа?
По хорошему, там должно быть что-то на подобии:
C++
1
{{1,'a'},{2,'b'},{3,'c'},{4,'d'},{5,'e'}}
Т.е. каждый элемент массива инициализируется своей парой. Но из-за brace elision "лишние" фигурные скобки можно опускать, правда работает это только для агрегированных типов. В этом случае компилятор может определить порядок, в котором инициализируются элементы твоей структуры.
0
24.07.2017, 09:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2017, 09:44

Аргумент разных типов для одной функции (без перегрузки)
День всем добрый! Я тут решил немного облегчить себе жизнь. У меня есть функция: void...

Как считать матрицу из файла без указания размерности?
Как считать матрицу из файла без указания размерности?

Как сделать ввод матрицы из файла без указания размера
Я сделал ввод матрицы из файла с указанием ее размера(массива),а как сделать ввод матрицы из файла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru