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

Что передаётся в функцию, если в прототипе ссылка? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить и отладить программу с использованием цикла for http://www.cyberforum.ru/cpp-beginners/thread719281.html
Объясните пожалуйста, не понимаю этого вообще ни как. Дано n вещественных чисел. Заменить те из них, у которых остаток от деления на m равен 2 числом m. Подсчитать количество таких замен.
C++ Посчитать количество элементов, отличающихся от среднего арифметического значения элементов массива Подсчитать количество элементов массива Р (60), отличающихся от среднего арифметического значения элементов массива М (70) не более чем вдвое, и количество элементов массива М, отличающихся от среднего арифметического значения массива Р не более, чем втрое. http://www.cyberforum.ru/cpp-beginners/thread719276.html
Написать программу с рекурсивной функцией C++
Написать программу с рекурсивной функцией, вычисляющей: http://i065.***********/1212/09/1befc1906d10.png Добавлено через 14 часов 36 минут .....
перевести double в int C++
Как перевести значения типа double (после логарифмического преобразования) в int?
C++ Обработка строки: удалить из числа все повторяющиеся цифры кроме первого вхождения http://www.cyberforum.ru/cpp-beginners/thread719248.html
С клавиатуры вводим произвольное число. От программы требуется удалить из этого числа все повторяющиеся цифры кроме первого вхождения. И вывести результат на экран. Код "написал", компиляцию прощел, но при введении элементов, уходит в цикл. #include<iostream> #include<string.h> #include<stdio.h> using namespace std;
C++ Перевести строку с датой во внутреннее представление Разработать функцию, которая переводит дату из символьного формата «дд.мм.гггг» во внутреннее представление и обратно. Пожалуйста помогите,заранее спасибо) подробнее

Показать сообщение отдельно
WhiteP
605 / 203 / 23
Регистрация: 20.11.2012
Сообщений: 419
04.12.2012, 20:36     Что передаётся в функцию, если в прототипе ссылка?
С точки зрения низкого уровня - версии со ссылками и указателями - одинаковы. VS2012, оптимизация отключена.

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
#include <iostream>
using namespace std;
 
void ref_swap(int& a, int& b)
{
    int tmp = a;
    a = b;
    b=tmp;
}
 
void p_swap(int *a, int *b)
{
    int tmp = *a;
    *a=*b;
    *b=tmp;
}
 
int main()
{
    int a = 0, b = 0;
    cout<<"Enter a: "; cin>>a;
    cout<<"Enter b: "; cin>>b;
    ref_swap(a, b);
    cout<<"a == "<<a<<"\nb == "<<b<<endl;
    p_swap(&a, &b);
    cout<<"a == "<<a<<"\nb == "<<b<<endl;
}
Кликните здесь для просмотра всего текста
Assembler
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
;   COMDAT ?ref_swap@@YAXAAH0@Z
_TEXT   SEGMENT
_tmp$ = -4                      ; size = 4
_a$ = 8                         ; size = 4
_b$ = 12                        ; size = 4
?ref_swap@@YAXAAH0@Z PROC               ; ref_swap, COMDAT
 
; 5    : {
 
    push    ebp
    mov ebp, esp
    push    ecx
 
; 6    :    int tmp = a;
 
    mov eax, DWORD PTR _a$[ebp]
    mov ecx, DWORD PTR [eax]
    mov DWORD PTR _tmp$[ebp], ecx
 
; 7    :    a = b;
 
    mov edx, DWORD PTR _a$[ebp]
    mov eax, DWORD PTR _b$[ebp]
    mov ecx, DWORD PTR [eax]
    mov DWORD PTR [edx], ecx
 
; 8    :    b=tmp;
 
    mov edx, DWORD PTR _b$[ebp]
    mov eax, DWORD PTR _tmp$[ebp]
    mov DWORD PTR [edx], eax
 
; 9    : }
 
    mov esp, ebp
    pop ebp
    ret 0
?ref_swap@@YAXAAH0@Z ENDP               ; ref_swap
_TEXT   ENDS


Кликните здесь для просмотра всего текста
Assembler
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
;   COMDAT ?p_swap@@YAXPAH0@Z
_TEXT   SEGMENT
_tmp$ = -4                      ; size = 4
_a$ = 8                         ; size = 4
_b$ = 12                        ; size = 4
?p_swap@@YAXPAH0@Z PROC                 ; p_swap, COMDAT
 
; 12   : {
 
    push    ebp
    mov ebp, esp
    push    ecx
 
; 13   :    int tmp = *a;
 
    mov eax, DWORD PTR _a$[ebp]
    mov ecx, DWORD PTR [eax]
    mov DWORD PTR _tmp$[ebp], ecx
 
; 14   :    *a=*b;
 
    mov edx, DWORD PTR _a$[ebp]
    mov eax, DWORD PTR _b$[ebp]
    mov ecx, DWORD PTR [eax]
    mov DWORD PTR [edx], ecx
 
; 15   :    *b=tmp;
 
    mov edx, DWORD PTR _b$[ebp]
    mov eax, DWORD PTR _tmp$[ebp]
    mov DWORD PTR [edx], eax
 
; 16   : }
 
    mov esp, ebp
    pop ebp
    ret 0
?p_swap@@YAXPAH0@Z ENDP                 ; p_swap
_TEXT   ENDS


Вызов этих функций - также 1 в 1.
 
Текущее время: 04:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru