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

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

Войти
Регистрация
Восстановить пароль
 
Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
#1

Ссылка на структуру - C++

10.07.2012, 15:45. Просмотров 1075. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 15:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылка на структуру (C++):

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

Ссылка на структуру с ссылками - C++
Не знаю в чем сложность, но неожиданно проблема Идея такова: есть структура vertex с координатами (ссылки) В дальнейшем появляется...

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

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

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

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

4
nexen
187 / 180 / 3
Регистрация: 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
Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
10.07.2012, 18:11  [ТС] #3
Цитата Сообщение от nexen Посмотреть сообщение
Амперсанд (&) используется для получения адреса переменной или для передачи параметров по ссылке, или для создания нового имени для некоторого блока памяти (ссылочной переменной)
А в моём примере зачем конкретно нужен этот первый амперсанд?
0
kent
Нуб со стажем
36 / 34 / 2
Регистрация: 19.02.2012
Сообщений: 118
10.07.2012, 18:19 #4
Fooly, чтобы показать, что мы не копию sysopref возвращаем, а непосредственно sysopref
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
10.07.2012, 18:22 #5
Цитата Сообщение от Fooly Посмотреть сообщение
А в моём примере зачем конкретно нужен этот первый амперсанд?
В твоем случае это никак на ход работы не повлияет. В принципе и const можно удалить.
Здесь она просто не создает никаких копий, а возвращает именно то "допольнительное имя" (заметь кавычки)
0
10.07.2012, 18:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2012, 18:22
Привет! Вот еще темы с ответами:

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

Как перенести продублировать данные из справочника.ЕдиницыИзмерения.Ссылка в справочник КлассификаторЕдиницИзмерения.Ссылка - 1С
Ну вапрос таков есть два справочника 1)КлассификаторЕдиницИзмерения и 2) ЕдиницыИзмерения нужна сделать так что бы у них были индоинтичные...

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

Что лучше сквозная ссылка или одна статейная ссылка с одного домена? - SEO
Что лучше сквозная ссылка или одна статейная ссылка с одного домена?


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

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

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