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

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

Войти
Регистрация
Восстановить пароль
 
 
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
#1

На засыпку для новичков: в функции передаётся один параметр, а его значения разные; почему? - C++

31.03.2013, 23:51. Просмотров 882. Ответов 20
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
//Тут некоторый код
 
void foo(X* pX) {printf ("%x\n", pX);}; 
void bar(Y* pY) {printf ("%x\n", pY);}; 
int main() 
{ 
 //Тут тоже некоторый код
 foo(pA); 
 bar(pA); 
 //И тут тоже некоторый код
}
А вот вывод:
3e2478
3e247c
Задание: восстановить весь код, чтобы так всё и было. Вроде передаётся одно значение (pA) а в функциях оно почему-то разное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2013, 23:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос На засыпку для новичков: в функции передаётся один параметр, а его значения разные; почему? (C++):

Как не писать один и тот же код, для функции, принимающей разные типы данных в качестве аргумента - C++
Проблема такая: есть некая функция. Внутри нее происходят одни и теже вычисления, вне зависимости от типа входных данных. void...

Что означает первый параметр метода этого класса? И почему при вызове метода передаётся один параметр(второй)? - C#
public static HelpPageApiModel GetHelpPageApiModel(this HttpConfiguration config, string apiDescriptionId)

Разные функции используют разные системы координат. Почему так? - OpenGL
Друзья! К примеру, нарисовали мы окно. И используем функцию void glutMouseFunc(void (*func)(int button, int state, int x, int y); ...

почему разные значения - VBA
Написал скрипт VBA Public Sub aa() Dim a As Double a = Log(2) * Log(2) * Log(2) Cells(1, 1) = a End Sub данный код...

Разные значения один и тот же результат - C (СИ)
Ввожу разные переменные а результат выдает один и тот же. В чем может причина может я что не так делаю #include &lt;stdio.h&gt; #include...

Циклы: почему выводятся разные значения? - PHP
Здравствуйте, помогите понять, почему в первом случае, выводит на экран 561, а во втором 595, в смысле разные значения. Мне кажется, что...

20
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
01.04.2013, 02:30  [ТС] #16
Я там подкорректировал, но это для простоты. Условие из первого поста вполне корректно, просто оно чуть-чуть сложнее минимально необходимого для решения задачи. Да, надо чтобы разные числа вывелись и всё.
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.04.2013, 02:32 #17
Просто под этот код можно много фигни понаписать, типа этой, но вряд ли это за решение сойдет
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#define pA (int*)(rand()%10)
typedef int X;
typedef int Y; 
 
void foo(X* pX) {printf ("%x\n", pX);}; 
void bar(Y* pY) {printf ("%x\n", pY);};
 
int main() 
{ 
 foo(pA); 
 bar(pA); 
}
1
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
01.04.2013, 02:35  [ТС] #18
Ну вот Jupiter опубликовал мой ответ. Ну всё, собсно.

Добавлено через 1 минуту
BumerangSP, сойдёт, но у меня и Jupiter, всё же другой ответ.
0
nonedark2008
933 / 672 / 148
Регистрация: 28.07.2012
Сообщений: 1,837
01.04.2013, 02:36 #19
Я тоже немного подумал над задачей.
Кликните здесь для просмотра всего текста
В итоге первым пришел вариант в голову как у Jupiter.
Второй, сделать так чтобы это дерьмо компилилось, а затем сверху дописать
C++
1
#define printf(x, y) printf("%i\n", rand());
Третий вариант - это реально просто у класса X перегрузить операторы приведения к типу X* и Y*, которые будут возвращать нужные нам циферки.
1
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
01.04.2013, 02:40 #20
Немного подкорректировал пример Jupiter'a. Чтобы он полностью соответствовал выводу в задании. Но почему так происходит?
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
40
41
42
43
44
#include <iostream>
 
class X
{
   public:
   virtual ~X()
   {
   }
};
 
class Y
{
   public:
   virtual ~Y()
   {
   }
};
 
class Z : public X, public Y
{
   public:
   virtual ~Z()
   {
   }
};
 
 
void foo(X* pX)
{
   std::cout << pX << std::endl;
}
 
void bar(Y* pY)
{
   std::cout << pY << std::endl;
}
 
int main()
{
   Z *pA = (Z*) 0x3e2478;
   Z &z = *pA;
   foo(pA);
   bar(pA);
}
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
01.04.2013, 02:41 #21
Цитата Сообщение от Buckstabue Посмотреть сообщение
Но почему так происходит?
Почитайте про полиморфизм и множественное наследование

Примерно так это выглядит:
На засыпку для новичков: в функции передаётся один параметр, а его значения разные; почему?
1
01.04.2013, 02:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2013, 02:41
Привет! Вот еще темы с ответами:

Задать несколько значений в один параметр функции - Assembler
В Дельфях например есть такая структуа: AnyFunction(@target, @source, ACCESS_ATTRIBUTE1 or ACCESS_ATTRIBUTE2) Или в Сях ...

Программа, определяющая, есть ли в массиве хотя бы один столбец, содержащий все одинаковые значения, содержащий все разные значения - Free Pascal
Написать программу, определяющую есть ли в массиве хотя бы один столбец, содержащий все одинаковые значения, содержащий все разные...

Битовое ИЛИ. Пердача нескольких констант в один параметр функции - C++
здраствуйте! иногда в примерах програмного кода замечаю, что несколько констант передаются в один парметр функции с помщью битового или....

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


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

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

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