Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
#1

считывание без указателей - C++

12.08.2013, 20:29. Просмотров 761. Ответов 23
Метки нет (Все метки)

В общем, понадобилась функция read <type> () или read(), с аргументами без &, через запятую, одного типа. Это вообще возможно? Inline не помогает.
макро с _ не подходит.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2013, 20:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос считывание без указателей (C++):

Как обойтись без указателей и указателей на указатель? - C++
Ибо не совсем выходит понять,что на что тут указывает #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace...

Без указателей - C++
Вот задание которое нужно сделать без указателей: Ввести в память расписание поездов следующих из Харькова через Киев. Какие из...

Переписать код без указателей - C++
Ввести в память машины одномерный целочисленный массив,используя динамическое выделение памяти,найти количество максимальных...

как записать в массив без указателей - C++
Записать в массив строк 1 строку { ifstream in(&quot;out.txt&quot;); if(!in) { cout&lt;&lt;&quot;Не могу открыть файл&quot;; ...

Переписать программу без использования указателей - C++
Всем привет. Есть программа с указателями , как сделать её без указателей? #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Записать функцию без использования указателей - C++
опять же всем доброго времени суток. знаю, что задание немного странное, но таково оно и есть. надо записать функцию без использования...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 10:22 #16
Андрей Xomach, если вы их передаёте в функцию, то они находятся в стеке, друг за другом.
0
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 10:27  [ТС] #17
или все же в соседние. надо разобраться

Добавлено через 10 секунд
Wolkodav, их копии

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
int main(){
    int a, b, c, d;
    int* sa = &a;
    cin >> *sa;
    for (int i = 1; i < 4; i++){
        sa++;
        cin >> *sa;
    }
    cout << a << b << c << d;
}
при вводе 1 2 3 4
на выходе 1432
это значит, что в памяти они будут помещаться всегда в таком порядке, или частный случай?
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
13.08.2013, 10:31 #18
Цитата Сообщение от Андрей Xomach Посмотреть сообщение
то значит, что в памяти они будут помещаться всегда в таком порядке, или частный случай?
Это UB.
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 10:33 #19
Андрей Xomach, какие такие копии? Я туда ссылку шурую. Никакой копии там нету) Туда ссылка суётся)
0
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 10:43  [ТС] #20
не понял, тогда так получается вызов:
C++
1
read(a, &b, &c, &d);
???
сейчас проверю

Добавлено через 5 минут
кажется работает, только надо их не нулями инициализировать, можно без инициализации сделать?

Добавлено через 2 минуты
нет, чушь, тоже, что и с
предыдущим моим кодом происходит. Вы берете указатель не на первый элемент стека КОПИЙ, а на "а". И пишете в следующие участки памяти, то же, что и в сообщении (18) делаете.
0
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.08.2013, 11:04 #21
Андрей Xomach, была какая-то библиотечка в С++, для передачи неопределённого числа параметров в функцию. Поищите, я название забыл.
1) Вызов просто:
C++
1
read(a,b,c,d)
Я туда ссылку запихнул, а не указатель. Соответственно он пишет, куда ссылается ссылка.
2) Не нулями, писал, надо библиотечку поискать. Название не помню только.
3) Ну так блин, первый 'a' это первый элемент, который передаётся в функцию, и иду дальше. Так уж получается в слудающих ячейках памяти лежат наши переменные.
0
Андрей Xomach
8 / 8 / 0
Регистрация: 22.01.2012
Сообщений: 59
13.08.2013, 11:13  [ТС] #22
1) stdarg, я помню, она непосредственно со стеком копий работает.
Вы помещаете ссылку лишь на первый, а следующие помещаете в чистом виде, в прочем, вы их не используете
Он пишет, куда ссылается ссылка, а затем в соседние с ним элементы. Вот тест:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<typename T>
void read(T& a,...)
{
    T* p = &a;
    while (*p)
    {
        cin >> *p;
        p++;
    }
}
 
int main(){
    int a = 1, b = 1, c = 1, d = 1;
    int a1 = 1, b1 = 1, c1 = 1, d1 = 1;
    read <int> (a, b1, c1, d1);
    cout << a << b << c << d;
}
во-первых, просит у нас он все 8 ввести и при вводе
1 2 3 4 5 6 7 8
вывод:
1876
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
13.08.2013, 11:40 #23
Для работы с переменным числом параметров используйте
va_list
va_start
va_arg
va_end
0
Убежденный
Системный программист
Эксперт С++
15550 / 7058 / 1114
Регистрация: 02.05.2013
Сообщений: 11,468
Завершенные тесты: 1
13.08.2013, 13:39 #24
Цитата Сообщение от Андрей Xomach Посмотреть сообщение
я хочу
C++
1
GET_VALUES(type, a, b, c...);
в
C++
1
2
3
4
5
6
type a;
type b;
type c;
cin >> a;
cin >> b;
cin >> c;
Это можно на препроцессоре сделать.
Правда, придется немного повозиться. Оно точно Вам надо ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2013, 13:39
Привет! Вот еще темы с ответами:

Привсоение масиву указателей объекты без имени - C++
Здравствуйте. Читал книгу там был пример, в нем не могу понять что присваивается массиву указателей ведь TwoDShape и Triangle это классы, а...

Вывести на экран матрицу без указателей и рандома - C++
Вывести на экран матрицу без указателей и рандома ! 1 4 7 10 13 2 5 8 11 14 3 6 9 12 15

считывание без пробелов - C++
нужно, чтобы при вводе с клавиатуры текста удалялись пробелы, и на выходе был массив чаров( или string) без пробелов. например: ...

Считывание из текстового файла. Считывает мусор без остановки - C++
Считывает мусор из файла без останови.Прекращение считывания при обнаружении конца теста в файле есть. #include&lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.08.2013, 13:39
Ответ Создать тему
Опции темы

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