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

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

Войти
Регистрация
Восстановить пароль
 
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
#1

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

07.08.2015, 18:13. Просмотров 208. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Куда именно копируется значения аргумента при передачи в функцию? (C++):

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

Как заносить значения аргумента в функцию - C++
В данном случае значения аргументов уже изначально заданы, но как сделать чтобы можно было их вводить вручную? #include &quot;stdafx.h&quot; ...

Размер массива при передачи в функцию - C++
День добрый, подскажите столкнулся с такой проблемой: void masssize (char mass) { int size = sizeof(mass)/sizeof(mass); cout...

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

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

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

9
nmcf
6099 / 5410 / 1891
Регистрация: 14.04.2014
Сообщений: 22,542
07.08.2015, 18:27 #2
Через стек.
1
lss
926 / 855 / 282
Регистрация: 10.10.2012
Сообщений: 2,705
07.08.2015, 18:28 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Дейтел и Дейтел "Как программировать на С++", "Стек вызовов и активационные записи".
1
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:33  [ТС] #4
lss, спасибо, обязательно прочту, я как раз паралельно читаю эту книгу )) а можете хотя бы в двух словах, выходит так что если бы я сделал return dd, а затем в мэйне присвоил возвращаемое значение структ. переменной, одно и то же значение хранилось бы в двух местах!??
0
Ferrari F1
623 / 521 / 101
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
07.08.2015, 18:35 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
anti-k, так ты же Дейтела читал пару часов назад, чего вдруг на лафоре перескачил?
1
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:41  [ТС] #6
Ferrari F1, )))) Мы проходим функции, мешок задач задали. Вроде все решил, но вот нормального понимания где эти переменные копируются и деваются не появилось ((. А Дейтела и Прату я читаю "для себя", паралельно.
0
lss
926 / 855 / 282
Регистрация: 10.10.2012
Сообщений: 2,705
07.08.2015, 18:42 #7
Цитата Сообщение от anti-k Посмотреть сообщение
одно и то же значение хранилось бы в двух местах!??
Под вторым местом, имеешь ввиду, на стеке?
0
anti-k
227 / 75 / 23
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
07.08.2015, 18:45  [ТС] #8
lss, ну да, на стеке. Или я не правильно понимаю?
0
lss
926 / 855 / 282
Регистрация: 10.10.2012
Сообщений: 2,705
07.08.2015, 18:47 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
При выходе из функции, указатель вершины стека возвращается туда, где он был до вызова функции, поэтому данные на стеке, передаваемые в функцию, оказываются в области стека считающейся свободной.

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

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

Аналог передачи аргумента функции в С++ - C++
Если функция имее вид на дельфи procedure name(a,b:integer; var c: integer) , то как можно записать ее на C++? Непонятно, как...

Как запомнить значение аргумента при запоминании ссылки на функцию? - C++
Есть допустим функция в классе class someClass { void foo(int a) { } } И ссылка на нее: void...

Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X - C++
Дан массив X, размером 5. Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X, и поместить их в...


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

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

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