![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
![]()
Здравствуйте.
На третий день изучения C++ столкнулся со следующим моментом: Как я понял, массивы сами по себе являются указателями, так что при передаче его в качестве параметра какой-то функции, передаётся адрес. Но что делать, если мне нужно передать именно не адрес массива, а его значения? Скажем, мне внутри функции нужно как-то обработать массив (например, в массиве char'ов отсечь ненужные символы), вывести на экран, НО чтобы тот массив, что передавался в качестве параметра, оставался нетронутым. В голову идёт только одна мыль - копирование массива-параметра в локальный массив. Но можно ли обойтись без лишних переменных? А вообще, вопрос этот встал из-за Delphi (на котором сидел до сего момента). Там, если я не ошибаюсь, массивы, переданные функциям в качестве параметров, не изменяются внутри функций. Утверждения вроде "потому что Delphi - это недоязык для чайников" не в счёт.) |
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
А насчет Си - передавай как обычно - указателем и меняй их значения исходя из этого указателя. Код:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
![]()
Наверное, не совсем корректно задал свой вопрос.
Нужно, чтобы приведённый в примере массив a[5] НЕ менял своих значений. |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Можно обернуть его в структуру, тогда передача будет происходить по значению, можно использовать стандартный контейнер std::vector, ну и безусловно можно копировать в локальный массив ф-ции
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
![]()
Аха, теперь все вопросы отпали)
Stilet, netrino, благодарю.) |
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
![]()
Я же в вопросе написал)
Ну, допустим, нам нужна функция printswap(char* c). Она, соответственно, принимает массив символов, потом выводит входные данные наоборот (меняет первые символы с последними). Функция никаких значений не возвращает, при вызове printswap("QWERTY") на экран будет выведено "YTREWQ", а ИСХОДНЫЙ массив останется нетронутым. ------ Конкретный пример - один и тот же массив символов, введённый пользователем, будет поочерёдно передаваться трём функциям: первая считает количество букв, вторая - количество слов, а третья - количество предложений. Хотя, не совсем удачный пример с printswap, потому как не представляю, как можно решить эту задачу без отдельного массива... Но вот вторая часть предыдущего сообщения - это да. Последний раз редактировалось Stilet; 12.04.2010 в 16:59. |
![]() |
![]() |
![]() |
#8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Код:
Код:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
![]()
Да, я что-то сглупил..)
Но если что-нибудь надумаю (что вряд ли) - непременно напишу.) Благодарю за помощь и разъяснения.) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как передать параметру записи, что в нем параметр это статический массив с данными? | SkAndrew | Общие вопросы Delphi | 6 | 26.06.2009 02:02 |
Математика. Получить параметр функции зная результат | Stilet | Общие вопросы по программированию, компьютерный форум | 2 | 06.03.2009 08:51 |
символьные данные сложной структуры и имя массива как параметр функции | EkaterinaA | Помощь студентам | 3 | 22.02.2009 21:36 |
Динамически массив как параметр ф-ии | SNUPY | Помощь студентам | 2 | 11.05.2008 01:16 |