|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.04.2010, 13:49 | #1 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
C++ - массив как параметр функции
Здравствуйте.
На третий день изучения C++ столкнулся со следующим моментом: Как я понял, массивы сами по себе являются указателями, так что при передаче его в качестве параметра какой-то функции, передаётся адрес. Но что делать, если мне нужно передать именно не адрес массива, а его значения? Скажем, мне внутри функции нужно как-то обработать массив (например, в массиве char'ов отсечь ненужные символы), вывести на экран, НО чтобы тот массив, что передавался в качестве параметра, оставался нетронутым. В голову идёт только одна мыль - копирование массива-параметра в локальный массив. Но можно ли обойтись без лишних переменных? А вообще, вопрос этот встал из-за Delphi (на котором сидел до сего момента). Там, если я не ошибаюсь, массивы, переданные функциям в качестве параметров, не изменяются внутри функций. Утверждения вроде "потому что Delphi - это недоязык для чайников" не в счёт.) |
12.04.2010, 14:04 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
А насчет Си - передавай как обычно - указателем и меняй их значения исходя из этого указателя. Код:
I'm learning to live...
|
|
12.04.2010, 14:43 | #3 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
Наверное, не совсем корректно задал свой вопрос.
Нужно, чтобы приведённый в примере массив a[5] НЕ менял своих значений. |
12.04.2010, 14:52 | #4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Можно обернуть его в структуру, тогда передача будет происходить по значению, можно использовать стандартный контейнер std::vector, ну и безусловно можно копировать в локальный массив ф-ции
|
12.04.2010, 15:04 | #5 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
Аха, теперь все вопросы отпали)
Stilet, netrino, благодарю.) |
12.04.2010, 15:07 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
12.04.2010, 16:05 | #7 |
Пользователь
Регистрация: 12.04.2010
Сообщений: 13
|
Я же в вопросе написал)
Ну, допустим, нам нужна функция printswap(char* c). Она, соответственно, принимает массив символов, потом выводит входные данные наоборот (меняет первые символы с последними). Функция никаких значений не возвращает, при вызове printswap("QWERTY") на экран будет выведено "YTREWQ", а ИСХОДНЫЙ массив останется нетронутым. ------ Конкретный пример - один и тот же массив символов, введённый пользователем, будет поочерёдно передаваться трём функциям: первая считает количество букв, вторая - количество слов, а третья - количество предложений. Хотя, не совсем удачный пример с printswap, потому как не представляю, как можно решить эту задачу без отдельного массива... Но вот вторая часть предыдущего сообщения - это да. Последний раз редактировалось Stilet; 12.04.2010 в 16:59. |
12.04.2010, 16:58 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
Код:
I'm learning to live...
|
|
12.04.2010, 17:48 | #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 |