Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
1

Ссылка на структуру

10.07.2012, 15:45. Просмотров 2647. Ответов 4
Метки нет (Все метки)

Рассматривал пример из книги Праты. Раздел про ссылки на структуры. В книжке был приведён пример, код примера можно увидеть ниже. У меня возник вопрос для чего нужен этот значек в прототипе и определении функции (выделен красным) const sysop & use (sysop & sysopref); Далее в книге этого не было разъяснено. Я убрал этот значек из прототипа и определения: результат работы программы остался тем же. Поясните плз

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
#include <iostream>
using namespace std;
struct sysop
{
    char name [26];
    char quote [64];
    int used;
};
const sysop & use (sysop & sysopref);
 
int main ()
{
    setlocale (LC_ALL, "Russian");
    sysop looper =
    {
        "Рик Цикличный",
        "Я выполняю переходы",
        0
    };
    use (looper);
    cout << "Looper: " << looper.used << "вызов(а)\n";
    sysop copycat;
    copycat = use (looper);
    cout << "Looper: " << looper.used << "вызов(а)\n";
    cout << "Copycat: " << copycat.used << "вызов(а)\n";
    cout << "use(looper): " << use(looper).used << "вызов(а)\n";
    for (int i = 0; i<100; i++)
        cin.get();
    return 0;
}
const sysop & use (sysop & sysopref)
{
    cout << sysopref.name << " говорит:\n";
    cout << sysopref.quote << endl;
    sysopref.used++;
    return sysopref;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2012, 15:45
Ответы с готовыми решениями:

Как создать структуру-список, поля которой — ссылка на такую же структуру
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же...

Не работает ссылка на структуру
Написать программу, выполняющую следующие действия: -ввод с клавиатуры данных в массив, состоящий...

Ссылка на структуру с ссылками
Не знаю в чем сложность, но неожиданно проблема Идея такова: есть структура vertex с...

Ссылка на структуру внутри класса
Программлю на с++ второй день нужно определить указатель на структуру и проинициализировать...

4
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
10.07.2012, 17:47 2
Цитата Сообщение от Fooly Посмотреть сообщение
Рассматривал пример из книги Праты. Раздел про ссылки на структуры. В книжке был приведён пример, код примера можно увидеть ниже. У меня возник вопрос для чего нужен этот значек в прототипе и определении функции (выделен красным) const sysop & use (sysop & sysopref); Далее в книге этого не было разъяснено. Я убрал этот значек из прототипа и определения: результат работы программы остался тем же. Поясните плз

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
#include <iostream>
using namespace std;
struct sysop
{
    char name [26];
    char quote [64];
    int used;
};
const sysop & use (sysop & sysopref);
 
int main ()
{
    setlocale (LC_ALL, "Russian");
    sysop looper =
    {
        "Рик Цикличный",
        "Я выполняю переходы",
        0
    };
    use (looper);
    cout << "Looper: " << looper.used << "вызов(а)\n";
    sysop copycat;
    copycat = use (looper);
    cout << "Looper: " << looper.used << "вызов(а)\n";
    cout << "Copycat: " << copycat.used << "вызов(а)\n";
    cout << "use(looper): " << use(looper).used << "вызов(а)\n";
    for (int i = 0; i<100; i++)
        cin.get();
    return 0;
}
const sysop & use (sysop & sysopref)
{
    cout << sysopref.name << " говорит:\n";
    cout << sysopref.quote << endl;
    sysopref.used++;
    return sysopref;
}
Амперсанд (&) используется для получения адреса переменной или для передачи параметров по ссылке, или для создания нового имени для некоторого блока памяти (ссылочной переменной), т.е :
1)
C++
1
2
 int k = 10;
int *p = &k;
Теперь указатель указывает на k
2)
C++
1
2
3
4
5
6
7
8
9
10
void MyFunc(int &y)
{
y++;
}
void main()
{
...
int x = 10;
MyFunc(x);
printf("%d", x);// выведет 11, так как в функцию передали переменную по ссылке, а именно сработало примерно так int &y = x; ниже пояснение
3)
C++
1
2
3
4
5
6
7
int x = 10;
int &y = x;
y++;
//x = 11 и y = 11.
int *p = &x;
(*p)++;
// х = 12, y = 12, ибо обе переменные указывают на один блок памяти
1
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
10.07.2012, 18:11  [ТС] 3
Цитата Сообщение от nexen Посмотреть сообщение
Амперсанд (&) используется для получения адреса переменной или для передачи параметров по ссылке, или для создания нового имени для некоторого блока памяти (ссылочной переменной)
А в моём примере зачем конкретно нужен этот первый амперсанд?
0
Нуб со стажем
36 / 34 / 10
Регистрация: 19.02.2012
Сообщений: 118
10.07.2012, 18:19 4
Fooly, чтобы показать, что мы не копию sysopref возвращаем, а непосредственно sysopref
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
10.07.2012, 18:22 5
Цитата Сообщение от Fooly Посмотреть сообщение
А в моём примере зачем конкретно нужен этот первый амперсанд?
В твоем случае это никак на ход работы не повлияет. В принципе и const можно удалить.
Здесь она просто не создает никаких копий, а возвращает именно то "допольнительное имя" (заметь кавычки)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2012, 18:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?..
Нужно отредактировать структуру по выбору пользователя. Проблема заключается в создании функции....

Ввод данных в структуру через указатель на структуру
#include &quot;stdafx.h&quot; #include &quot;ctime&quot; #include &quot;iostream&quot; #pragma warning(disable : 4996) ...

Бинарное дерево. Ссылка на структуру
Строю бинарное дерево. Узлы - структуры. Сортировка будет по номеру рейса. Как сделать ссылку на...

Если нет файла, но есть ссылка, то будет отображаться ссылка на указанную страницу...
Здравствуйте, понадобилась помощь в php)) В общем есть такой код: &lt;?php $file =...


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

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

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