Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 10

Пожалуйста объясните

15.03.2019, 22:14. Показов 1184. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
string& Input_Message(string msg)
{
    cin.ignore();
    getline(cin, msg);
    return msg;
}
C++
1
2
3
4
5
6
string* Input_Message(string msg)
{
    cin.ignore();
    getline(cin, msg);
    return msg;
}
Я набросал это для примера.
Никак не могу понять перед string ставится аперсанд либо указатель,объясните пожалуйста для чего и в каких целях это делается.Буду вам очень признателен!
Что такое ссылки и указатели знаю)
Просто не понимаю что это значит когда ставится перед типом функции
Сразу прощу прощения, не знаю можно ли такие вопросы задавать или нет(
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2019, 22:14
Ответы с готовыми решениями:

объясните пожалуйста
для чего нужны библиотеки stdafx.h и iomanip.h?

Объясните пожалуйста
Разбор исходного текста на языке программирования. Выделение в исходном коде программы ключевых слов языка и операторов языка по словарю....

Объясните пожалуйста
char str; int count = 0; cout << "Enter string:" << endl; cin.getline(str, 255); for (int i = 0; str; i++) { ...

4
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
15.03.2019, 22:22
Обе функции ошибочны, первая возвращает ссылку на временный объект, это неопределенное поведение.
Вторая вообще не скомпилируется, поскольку string в string* явно не преобразовывается.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
15.03.2019, 22:37
Лучший ответ Сообщение было отмечено GlebLimon как решение

Решение

GlebLimon, здравствуйте! В С++, по моему уровню знаний, ссылки и указатели могут использоваться для разных целей. Наиболее яркими примером является передача параметра функции по ссылке. Часто это делается с объектами, такими как строка или вектор (вплоть до сложных объектов типа struct или class), часто с целью оптимизации, так как при передаче по ссылке не создается копия объекта. Перед типом функции указатель ставится, если возвращаемое значение является указателем. То есть, например, если вы объявите массив как динамический с помощью указателя, то и возвращаемое значение будет указателем на массив. Например,

Мы объявили массив так, значит и при передаче нужно возвращать указатель на массив (если мы хотим вернуть сам массив, а не что-то другое). Вот пример функции, которая вернет отсортированный массив:

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
#include <iostream>
#include <algorithm>
 
    using namespace std;
    
int* f(int* arr, int n) {
    sort(arr, arr + n);
    return arr;
}
 
int main() {
    int n;
    cout << "Enter an array size:\n";
    cout << "n = ";
    cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    arr = f(arr, n);
    cout << "Output of the program:" << "\n";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    delete [] arr;
    system("pause");
    return 0;
}
Можно придумать еще примеры использования указателей и ссылок. Язык C++ очень сложный язык и манипулировать им очень сложно, но возможно. А понимание придет после практики, но это, конечно, мое личное мнение.
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
15.03.2019, 22:42
GlebLimon, примеры плохие, т.к. они не рабочие. В первом случае ссылка на локальный объект после выхода из функции не действительна, во - втором то же самое плюс синтаксическая ошибка. Вас интересует только string или вообще для чего это может пригодиться?

Возврат указателя очевидно потребуется при работе с указателями. Например, если внутри функции была выделена память.

Ссылка может потребоваться для доступа к какому-либо объекту, к которому нет прямого доступа извне или который может подменяться в процессе исполнения программы.

Пример использования указателей и ссылок в качестве возвращаемого значения функции
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
#include <iostream>
using namespace std;
 
/**
 * Создание и заполнение динамически выделенного массива.
 */
int* createArray(size_t size, int fill) {
    int *arr = new int[size];
 
    for (size_t i = 0; i < size; ++i) {
        arr[i] = fill;
    }
 
    return arr;
}
 
/**
 * Обращение к элементам одномерного массива по двум индексам
 * (имитация двумерного массива).
 */
int& getItem(int *arr, size_t width, size_t i, size_t j) {
    return arr[i * width + j];
}
 
int main() {
    const size_t m = 4;
    const size_t n = 4;
 
    int *arr = createArray(m * n, 1);
 
    for (size_t i = 0; i < m; ++i) {
        getItem(arr, n, i, i) = (i + 1) * 10;
    }
 
    for (size_t i = 0; i < m; ++i) {
        for (size_t j = 0; j < n; ++j) {
            cout.width(3);
            cout << getItem(arr, n, i, j);
        }
 
        cout << endl;
    }
 
    delete[] arr;
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.03.2019
Сообщений: 10
15.03.2019, 23:12  [ТС]
Всем огромное спасибо,понял)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2019, 23:12
Помогаю со студенческими работами здесь

Объясните пожалуйста
Как работает эта программа? #include &lt;iostream&gt; using namespace std; int main() { char mas1;

Объясните, пожалуйста
Всё читал, читал и никак не нашел внятного ответа на два вопроса: для чего нужна перегрузка операторов и для чего нужны виртуальные...

Объясните пожалуйста
Есть код : char text=&quot;In&quot;; int a=sizeof(text); Вопрос : почему a = 3 ? ( там 2 символа вроде как )

объясните пожалуйста
как программировать по формуле?

Объясните пожалуйста!
Всем привет! Нашел код на форуме, который нужен, но не могу разобраться в нем! Программа переводит числа из десятичной в двоичную СС....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru