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

Возможно ли предать массив в процедуру/функцию, не изменяя исходных данных?

28.09.2018, 14:00. Показов 1413. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста, возможно ли предать массив в процедуру/функцию, не изменяя исходных данных , но так, чтобы не создавать копии этого массива внутри процедуры/функции?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2018, 14:00
Ответы с готовыми решениями:

Постройте график функции. Таблицу данных получить, изменяя параметр X с шагом h. Ввод исходных данных организовать через окнаTEdit
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

Возможно ли передать компонент в процедуру/функцию?
Можно ли передать компонент, созданный на форме, в качестве аргумента в процедуру?) Ну типа procedure test1(edit:TMemo); begin ...

Как не изменяя роботы программы применить в ней процедуру?
var x: array of real; n, i: integer; sum, sr: real; begin writeln ('vvedit rozmirnist massivu :'); readln (n); sum:=0; ...

12
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
28.09.2018, 14:20
Цитирую Шилдта: "Никакой параметр не может принять целый массив. В функцию будет передан указатель на массив". Если вы хотите, чтобы передаваемый массив не был как-либо изменен, то используйте такую конструкцию:
C++
1
void Foo( const int *array]
подробнее об константных указателях: Const & function
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.09.2018, 15:33
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Цитирую Шилдта: "Никакой параметр не может принять целый массив. В функцию будет передан указатель на массив"
прохладная история, Бро.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
void foo(const auto& arr)
{
    for(auto& el: arr)
        std::cout << el << ", ";
}
 
int main()
{
    int v[] = {1,2,3,4, 5};
    foo(v);
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
28.09.2018, 15:52
hoggy, к сожалению (VS 2017):
Bash
1
2
3
4
5
Серьезность  Код  Описание    Проект    Файл    Строка    Состояние подавления
Ошибка    E1598   тип "авто" здесь не разрешен  test    d:\current\test\test.cpp    3   
Ошибка    C3533   параметр не может иметь тип, содержащий "auto" test    d:\current\test\test.cpp    3   
 
Ошибка    C2664   "void foo(const int &)": невозможно преобразовать аргумент 1 из "int [5]" в "const int &" test    d:\current\test\test.cpp    12
И так тоже не получится (нельзя передать массив по ссылке)
C++
1
2
3
4
5
void foo(int& arr[])
{
    for (auto el = begin( arr);el!=end(arr);++el)
        std::cout << *el << ", ";
}
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
28.09.2018, 17:08
Code
1
2
3
$ g++ main.c -Wall -Wextra
$ ./a.out 
1, 2, 3, 4, 5, $
Попробуйте включить поддержку стандарта С++14 или выше:
Code
1
2
$ g++ main.c -Wall -Wextra -std=c++11
main.c:3:16: error: use of ‘auto’ in parameter declaration only available with -std=c++14 or -std=gnu++14
1
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
28.09.2018, 17:59
У меня VS2017
Явно указал
Стандарт ISO C++17 (/std:c++17)

Результат тот же.
Ошибка E1598 тип "авто" здесь не разрешен test d:\current\test\test.cpp 3
Ошибка C3533 параметр не может иметь тип, содержащий "auto" test d:\current\test\test.cpp 3
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.09.2018, 18:06
Цитата Сообщение от zss Посмотреть сообщение
Результат тот же.
не знаете как порешать проблему отсталого компилятора вижал студии?
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
28.09.2018, 20:06
Какой же он отсталый, если поддерживает
Цитата Сообщение от zss Посмотреть сообщение
Стандарт ISO C++17 (/std:c++17)
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.09.2018, 20:19
такой что не поддерживает. поддкрживал - не сношал бы моск. а вы сами не знаете, как починить косяк отсталого компилятора?
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
28.09.2018, 22:14
hoggy, а вы - знаете? Так подскажите чтобы человек мог проверить.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.09.2018, 16:48
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
а вы - знаете? Так подскажите чтобы человек мог проверить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
template<class T, size_t N>
void foo(const T (&arr)[N])
{
    for(auto& el: arr)
        std::cout << el << ", ";
}
 
int main()
{
    int v[] = {1,2,3,4, 5};
    foo(v);
}
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
30.09.2018, 21:32
hoggy, Вы считаете, что массив и ссылка на массив - один и тот же тип?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
30.09.2018, 21:52
Цитата Сообщение от zss Посмотреть сообщение
нельзя передать массив по ссылке
Можно же
Только там синтаксис чуть другой будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2018, 21:52
Помогаю со студенческими работами здесь

Оцените данную сборку, возможно ли улучшить не изменяя сумму покупки?
Оцените пожалуйста данную сборку, возможно ли что-либо улучшить не изменяя сумму покупки. Собрал сам. В приоритете игры. Если возможно...

Ввод исходных данных из текстового файла в массив записей
Выведите фамилии учащихся мужского пола, не достигших 18 лет, в порядке возрастания кодов групп, а внутри группы – в порядке возрастания...

Разработайте программу ввода исходных данных из текстового файла в массив записей
Разработайте программу ввода исходных данных из текстового файла в массив записей. Исходные данные и необходимые результаты представьте на...

Разработайте программу ввода исходных данных из текстового файла в массив записей
Разработайте программу ввода исходных данных из текстового файла в массив записей. Исходные данные и необходимые результаты представьте на...

Сформировать третий массив на основе данных исходных массивов, который также упорядочен
В общем, задание следующее: 1. Даны два целочисленных массива 2. Реализуйте алгоритмы сортировок данных массивов. 3. Сформировать...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru