2 / 2 / 1
Регистрация: 08.07.2017
Сообщений: 32
1

Передача переменных в функцию

01.01.2018, 22:36. Показов 524. Ответов 3
Метки нет (Все метки)

Какой из следующих вариантов передачи переменных в функцию лучше всего использовать? Так сказать что из это меньше всего нагружает процесс вычисления?
1) void funValue(int num1, int num2); //int num1 = a, int num2 = b;

2) void funPtr(int *num1, int *num2); //int *num1 = &a, int *num2 = &b;

3) void funPtrValue(int *num1, int *num2); //int *num = pa, int *num2=pb;

4) void funPtrRef(int* &num1, int* &num2); //int* &num1 = pa, int* &num2 = pb;

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
void funValue(int num1, int num2);//int num1 = a, int num2 = b;
 
void funRef(int &num1, int &num2);//int &num1 = a, int &num2 = b;
 
void funPtr(int *num1, int *num2);//int *num1 = &a, int *num2 = &b;
 
void funPtrValue(int *num1, int *num2);//int *num = pa, int *num2=pb;
 
void funPtrRef(int* &num1, int* &num2);//int* &num1 = pa, int* &num2 = pb;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int a = 98;
    int b = 87;
 
    cout << "&a=" << &a << ", &b=" << &b << endl;
    cout <<"a ="<< a << ", b =" << b << endl;
 
    //1 передача по значению
    //funValue(a, b);
 
    //2 передача по ссылке
    //funRef(a, b);
 
    //3 передача по указателям
    //funPtr(&a, &b);
 
    int *pa = &a;
    int *pb = &b;
 
    cout <<"pa = "<< pa << ", pb = " << pb << endl;
    cout << "&pa = " << &pa << ", &pb = " << &pb << endl;
 
    //4 передача указателей по значению
    //funPtrValue(pa, pb);
 
    funPtrRef(pa, pb);
    cout << "a =" << a << ", b =" << b << endl;
 
    system("pause");
    return 0;
}
 
void funValue(int num1, int num2)
{
    cout << "\n===========================funValue()===========================\n";
 
    num1 = num1 + 100;
    num2 = num2 + 100;
 
    cout<<"&num1=" << &num1 << ", &num2=" << &num2 << endl;
    cout <<"num1="<< num1 << ", num2=" << num2 << endl;
 
    cout << "\n================================================================\n";
 
void funRef(int &num1, int &num2)
{
    cout << "\n===========================funRef()===========================\n";
 
    num1 = num1 + 100;
    num2 = num2 + 100;
 
    cout << "&num1=" << &num1 << ", &num2=" << &num2 << endl;
    cout << "num1="<<num1 << ", num2=" << num2 << endl;
 
    cout << "\n================================================================\n";
}
 
void funPtr(int *num1, int *num2)
{
    cout << "\n===========================funPtr()===========================\n";
 
    *num1 = *num1 + 100;
    *num2 = *num2 + 100;
 
    cout << "*num1=" << *num1 << ", *num2=" << *num2 << endl;
    cout << "num1=" << num1 << ", num2=" << num2 << endl;
 
    cout << "\n================================================================\n";
}
 
void funPtrValue(int *num1, int *num2)
{
    cout << "\n===========================funPtrValue()===========================\n";
 
    *num1 = *num1 + 100;
    *num2 = *num2 + 100;
 
    cout << "&num1 = " << &num1 << ", &num2 = " << &num2 << endl;
    cout << "*num1=" << *num1 << ", *num2=" << *num2 << endl;
    cout << "num1=" << num1 << ", num2=" << num2 << endl;
 
    cout << "\n================================================================\n";
}
 
void funPtrRef(int* &num1, int* &num2)
{
    cout << "\n===========================funPtrRef()===========================\n";
 
    *num1 = *num1 + 100;
    *num2 = *num2 + 100;
 
    cout << "&num1 = " << &num1 << ", &num2 = " << &num2 << endl;
    cout << "*num1=" << *num1 << ", *num2=" << *num2 << endl;
    cout << "num1=" << num1 << ", num2=" << num2 << endl;
 
    cout << "\n================================================================\n";
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2018, 22:36
Ответы с готовыми решениями:

Передача переменных в функцию
#include &lt;iostream&gt; int fun(int x, int y, int z); int main() { int x, y, z;

Передача значений переменных в функцию()
int main() Братья программисты! Вот занимаюсь немножко... возник вопрос, но но книжке его ведь не...

Для чего используеться передача структурных переменных в функцию?
Вообщем прошу помощи. 1) Для чего используеться передача структурных переменных в функцию? Как...

Передача переменных в функцию
Привет Пацаны :) Немогу понять работу функции. Ниже пример. &lt;?php function...

3
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
01.01.2018, 22:50 2
через указатели или ссылки
1
"C with Classes"
1581 / 1360 / 511
Регистрация: 16.08.2014
Сообщений: 5,647
Записей в блоге: 1
01.01.2018, 22:57 3
Zalj, любой, интегральные типы передаются так же быстро как указатели и ссылки.
1
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
01.01.2018, 23:04 4
инты по значению передавать, если надо возвращать изменения - по ссылке, да и по указателю можно, разницы нет. Хотя, где-то читал, что адреса передаются через стек, а значения через регистры
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2018, 23:04
Помогаю со студенческими работами здесь

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

Передача 2х переменных в функцию
2 приватных переменных х и y есть void метод А вычисляет свои вопросы принимает, передает и...

Передача переменных в функцию
Некоторую заминку у меня вызвала следующая ситуация. Предположим, есть класс С: public...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru