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

Как передать в функцию ссылку на структуру? - C++

Восстановить пароль Регистрация
 
tst
 Аватар для tst
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 211
16.01.2016, 22:45     Как передать в функцию ссылку на структуру? #1
Добрый вечер, помогите пожалуйста разобраться. Нужно чтобы функция myProc принимала не структуру, а ссылку на структуру.
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
struct vs {
    long L;
    int i1, i2; char c[5];
};
 
void myProc(vs my_struct) {
    cout << "\n Размер структуры  = " << sizeof(my_struct) << " байт " << endl << endl;
    cout << "Значение элементов структуры в 10-ной системе счисления:" << endl;
    cout << "\tSTR.L = " << my_struct.L;
    cout << "\tSTR.i1 = " << my_struct.i1;
    cout << "\tSTR.i2 = " << my_struct.i2;
    cout << "\tSTR.c[1] = " << my_struct.c[1];
 
    cout << "\nЗначение элементов структуры в 16-ной системе счисления:" << endl;
    cout << "\tSTR.L = " << hex << my_struct.L;
    cout << "\tSTR.i1 = " << hex << my_struct.i1;
    cout << "\tSTR.i2 = " << hex << my_struct.i2;
    cout << "\tSTR.c[1] = " << hex << my_struct.c[1];
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    vs STR = { 10L, 20, 30, 'a', 'b', 'c', 'd' , 'e'};
    myProc(STR);
    cin.get();
    return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2016, 22:45     Как передать в функцию ссылку на структуру?
Посмотрите здесь:

Как передать в функцию строку и инициализировать ею структуру? C++
Как передать в функцию число и структуру побайтно? C++
C++ как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
C++ Как передать указатель на структуру в функцию
C++ Как передать в функцию указатель на структуру, если эта структура не определена глобально?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
16.01.2016, 22:47     Как передать в функцию ссылку на структуру? #2
C++
1
void myProc(vs & my_struct)
Nosey
 Аватар для Nosey
1185 / 352 / 102
Регистрация: 22.10.2014
Сообщений: 789
Завершенные тесты: 2
16.01.2016, 22:54     Как передать в функцию ссылку на структуру? #3
tst,
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
struct vs
{
    long L;
    int i1, i2;
    char c[6]; // и тут указывать 6 элементов, а не 5, +1 для окончательного нуля.
};
 
void myProc(vs& my_struct) // и ответ на ваш вопрос тут. можно ещё написать "const vs&" вместо "vs&"
{
    cout << "\n Размер структуры  = " << sizeof(my_struct) << " байт " << endl << endl;
    cout << "Значение элементов структуры в 10-ной системе счисления:" << endl;
    cout << "\tSTR.L = " << my_struct.L;
    cout << "\tSTR.i1 = " << my_struct.i1;
    cout << "\tSTR.i2 = " << my_struct.i2;
    cout << "\tSTR.c[1] = " << my_struct.c[1];
 
    cout << "\nЗначение элементов структуры в 16-ной системе счисления:" << endl;
    cout << "\tSTR.L = " << hex << my_struct.L;
    cout << "\tSTR.i1 = " << hex << my_struct.i1;
    cout << "\tSTR.i2 = " << hex << my_struct.i2;
    cout << "\tSTR.c[1] = " << hex << my_struct.c[1];
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    vs STR = { 10L, 20, 30, { 'a', 'b', 'c', 'd', 'e' } }; // стоит делать вот так.
    myProc(STR);
    cin.get();
    return 0;
 
}
Kotik_leapold
 Аватар для Kotik_leapold
73 / 68 / 48
Регистрация: 18.12.2015
Сообщений: 303
16.01.2016, 23:33     Как передать в функцию ссылку на структуру? #4
Здравствуйте, в указаном случае можно использовать два варианта:

первый, функция в качестве параметра ссылка
C++
1
              void myProc(vs& my_struct)
доступ к полям осуществляется через "."
другой, функция в качестве параметра указатель
C++
1
               void myProc(vs* my_struct)
доступ к полям осуществляется через "->"
Yandex
Объявления
16.01.2016, 23:33     Как передать в функцию ссылку на структуру?
Ответ Создать тему
Опции темы

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