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

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

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Функция с переменным кол-вом аргументов char vs int - C++

23.09.2013, 09:22. Просмотров 348. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
 
#include <cstdio>
 
using namespace std;
 
 
 
void func (int amount, ...)
 
{
 
  int *p = (int*)(&amount +1);
 
  printf("%d\n", amount);
 
while(amount-- > 0)
 
  {
 
        printf("%c\n", *p);
 
        ++p;
 
  }
 
}
 
 
 
int main() {
 
    func(2, '8', '#');
 
    return 0;
 
 
 
}
Почему здесь работает int*? Пытался с char*, пытался передавать параметры char("#"), но всё равно сами char'ы располагались по смещению +4 (sizeof(int)). Неужто как-то процессорное слово вмешивается?
Онлайн компилятор : http://ideone.com/0hc0ou#comments
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2013, 09:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция с переменным кол-вом аргументов char vs int (C++):

создание ф-ии с плавающим кол-вом аргументов неизвестного типа. (С / С++) - C++
Как создать такую? Иными словами, интересует принцип работы (в плане приема аргументов) ф-ии printf (); Ведь в нее можно передавать любое...

Шаблонная функция с переменным числом аргументов - C++
Сабж. Каким образом можно запретить использование шаблонной функции, если тип одного из аргументов не соответствует требуемому? Есть...

Функция с переменным числом аргументов (через шаблоны) - C++
Доброго времени суток! Встал вопрос с реализацией такой функции. template&lt;typename... Args&gt; returntype functionname(const Args&amp;......

Функция с переменным количеством аргументов вызывает out of memory - C++
property(string &amp; name_c, short nesting_c, string &amp; level1, ...) { nesting=nesting_c; name=name_c; va_list p; ...

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Форматирование строк, char to int & int to char - C++
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn str_to_num(const str) // Тупо...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NoMasters
Псевдослучайный
1754 / 1097 / 72
Регистрация: 13.09.2011
Сообщений: 3,134
23.09.2013, 14:26 #2
Потому, что выравнивание. Но пытаться работать с ним руками не надо, ибо положение элементов зависит от компилятора и целевой машинки, для этого есть va_list.
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
23.09.2013, 16:50  [ТС] #3
NoMasters, никогда не слышал о выравнивании при передачи аргументов функции оО
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 16:50
Привет! Вот еще темы с ответами:

Как превести из char* в int и наоборот из int в char*? - C++
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Шаблон с ограниченным кол-вом типов - C++
Всем хорошего настроения. Допустим у нас есть код #include &lt;iostream&gt; template&lt;typename MyType&gt; void MyFunc(MyType a){ ...

Вывести слово с максимальным кол-вом символов - C++
Добрый день. Я хожу к репетитору по программированию (с++). Пока просто пытаюсь понять азы. На дом было дано задание, которое заключается в...

Строка: удалить лишние пробелы и определить слово с минимальным кол-вом согласных в строке - C++
мое задание : удалить лишние пробелы и определить слово с минимальным кол-вом согласных в строке.... вот моя задача... я удалил лишние...


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

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

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