Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
#1

Куда именно копируется значения аргумента при передачи в функцию?

07.08.2015, 18:13. Просмотров 819. Ответов 9
Метки нет (Все метки)

Куда именно копируется значения аргумента при передачи в функцию? И куда(где ) деваются эти копии в этом частном случае?
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
#include<iostream>
using namespace std;
 
struct Distance{
    int feet;
    float inches;
};
void foo(Distance);
int main(){
Distance d1,d2;
cin>>d1.feet;
cin>>d1.inches;
d2.feet=24;
d2.inches=43;
foo(d1);
cout<<endl;
foo(d2);
    return 0;
}
void foo(Distance dd){
    dd.feet=10;
    dd.inches=10;
    cout<<dd.feet<<"/"<<dd.inches<<endl;    
}
Добавлено через 4 минуты
И каким образом вообще происходит это копирование!??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2015, 18:13
Ответы с готовыми решениями:

Указать значения аргумента, при которых функцию нельзя вычислить
Указать значения аргумента, при которых функцию нельзя вычислить.

Как заносить значения аргумента в функцию
В данном случае значения аргументов уже изначально заданы, но как сделать чтобы...

Размер массива при передачи в функцию
День добрый, подскажите столкнулся с такой проблемой: void masssize (char...

В чем ошибка при передачи статического массива в функцию
Не кидайте камни за использование глобальных переменных и статических двумерных...

Не работает вектор структур при передачи его в функцию-ошибки
Написал такой код struct lol{ }; #include &lt;vector&gt; #include &lt;windows&gt; ...

9
nmcf
6260 / 5572 / 2532
Регистрация: 14.04.2014
Сообщений: 23,464
07.08.2015, 18:27 #2
Через стек.
1
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
07.08.2015, 18:28 #3
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

Дейтел и Дейтел "Как программировать на С++", "Стек вызовов и активационные записи".
1
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:33  [ТС] #4
lss, спасибо, обязательно прочту, я как раз паралельно читаю эту книгу )) а можете хотя бы в двух словах, выходит так что если бы я сделал return dd, а затем в мэйне присвоил возвращаемое значение структ. переменной, одно и то же значение хранилось бы в двух местах!??
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
07.08.2015, 18:35 #5
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

anti-k, так ты же Дейтела читал пару часов назад, чего вдруг на лафоре перескачил?
1
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:41  [ТС] #6
Ferrari F1, )))) Мы проходим функции, мешок задач задали. Вроде все решил, но вот нормального понимания где эти переменные копируются и деваются не появилось ((. А Дейтела и Прату я читаю "для себя", паралельно.
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
07.08.2015, 18:42 #7
Цитата Сообщение от anti-k Посмотреть сообщение
одно и то же значение хранилось бы в двух местах!??
Под вторым местом, имеешь ввиду, на стеке?
0
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:45  [ТС] #8
lss, ну да, на стеке. Или я не правильно понимаю?
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
07.08.2015, 18:47 #9
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

При выходе из функции, указатель вершины стека возвращается туда, где он был до вызова функции, поэтому данные на стеке, передаваемые в функцию, оказываются в области стека считающейся свободной.

Добавлено через 1 минуту
Лучше почитай у Дейтелов, том всё подробно, и с картинками, расписано.
1
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:48  [ТС] #10
lss, спасибо!!
0
07.08.2015, 18:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2015, 18:48

Создать функцию, имеющую два аргумента и возвращающую в качестве аргумента число из отрезка [a,b]
Создать функцию, которая будет иметь два целочисленных параметра a и b, и в...

Напишите функцию, принимающую два аргумента, изменяющую значение второго аргумента и возвращающую void
Помогите, пожалуйста:( Напишите функцию add_tax типа void. У нее два...

Вычисление значения функции при произвольном значении аргумента
Помогите пожалуйста. Нужно составить программу вычисления значения функции y(x)...


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

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

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