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

Указатель на массив и его дальнейшее пользование

03.12.2017, 16:28. Показов 1090. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем доброго денька.
Я тут, в общем, пытаюсь вернуть из функции массив, чтобы потом, где-нибудь в другой функции его использовать.
Ну например:
C++
1
2
3
4
5
6
7
8
9
int * func(void)
{
    //....
    //....
    //....
    int roots[2] = {2, 9};
    int * ptrRoots = roots;
    return ptrRoots;
}
Такая вот функция. Почитал, что это возвращение ссылки лишь на 1 элемент массива. Так, а как сделать, чтобы на второй тоже получить. Да и на весь массив в целом. Чтобы иметь доступ к нему в другой функции..
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2017, 16:28
Ответы с готовыми решениями:

Разбиение файла на массив и дальнейшее его сравнение
первый день как начал изучать питон, помогите пожалуйста в написании лабораторной работы. пример исходного файла: 2 1054 1492 4 ...

Указатель на const массив изменяет его?
Привет! Задача была написать функцию, сохраняющую расширение файла из строки file_name в строку extension. Строка file_name задана как...

C++ и дальнейшее его пременение
Товарищи! С трудом дается, но дается С++, есть ли смысл покончить мукам конец? Я учусь на программиста, но пошла туда ради PHP, Java,...

4
121 / 100 / 79
Регистрация: 30.11.2017
Сообщений: 230
03.12.2017, 16:47
C++
1
2
3
4
5
6
7
8
int n;
 
int *func(void)
{
    int roots[2] = { 2, 9 };
    n = 2;
    return roots;
}
Вместо глобальной переменной можно хранить размер массива в первом элементе этого массива (roots[0]). Вот так:
C++
1
2
3
4
5
int *func(void)
{
    int roots[3] = { 3, 2, 9 };
    return roots;
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2017, 16:47
Возвращать локальный объект нельзя.
0
 Аватар для plump_cat
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 27
03.12.2017, 16:54  [ТС]
А если у функции сделать аргумент-массив и она его будет изменять в теле функции, массив так и останется измененным после завершения работы функции?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
03.12.2017, 16:59
Лучший ответ Сообщение было отмечено plump_cat как решение

Решение

Цитата Сообщение от plump_cat Посмотреть сообщение
Да и на весь массив в целом. Чтобы иметь доступ к нему в другой функции..
Лучший вариант - создай массив в другой функции, а в этой только заполняй его значениями. Вариант похуже - сделай здесь динамический массив, и уже во внешней функции его удаляй.

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

Добавлено через 3 минуты
Заполнять уже созданный массив можно как через указатель, так и через объявление массива:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void func(int roots[2])
{
    roots[0] = 2;
    roots[1] = 9;
}
void func(int roots[])
{
    roots[0] = 2;
    roots[1] = 9;
}
void func(int *roots)
{
    roots[0] = 2;
    roots[1] = 9;
}
Все три записи делают одно и то же.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.12.2017, 16:59
Помогаю со студенческими работами здесь

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

Пересоздание массива в функции и дальнейшее его использование в main
Почему, когда я вызываю std::cout << _list в функции, то вывод идет нормальный, а когда в main, то выводится не то, что нужно ? ...

Подключение dll с ресурсов и его дальнейшее использование в нём
Как подключить к примеру Interop.WMPLib.dll в программу через ресурсы ? В данный момент стоит некоторая задача, где мне не нужно подключать...

Написать функцию, получающую указатель на массив и возвращает сумму и произведение его элементов
Надо написать функцию, которая получает указатель на массив и его размер, и возвращает сумму и произведение его элементов в двух ...

Сохранение массива в памяти и дальнейшее его использование другими скриптами
Здравствуйте! Я не знаю как правильно это назвать. задача такая: запускаю скрипт который берет с диска и записывает массив данных в память....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru