Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 14:36   #1
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
Вопрос Сложность с массивами

Появилась проблема: необходимо передать массив в функцию и возвратить такой же массив. Вроде передавать понял как:
Код:
longPlus(int a[], int b[])
Но как вернуть? Пишу так - int[] - говорит ошибка.

Еще один вопрос - почему нельзя написать t = a, если это массивы из одинаковых элементов с одинаковой размерностью. Не в цикле же их копировать?
k1r1ch вне форума Ответить с цитированием
Старый 09.01.2010, 15:01   #2
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

Немного не в тему но всеже:
Есть три варианта возврата обьектов из ф-ий. Вот примеры с обьектами типа int:

int F() { return 0; }
void F(int* i) { *i = 0; }
void F(int& i) { i = 0; }

Третий лучше второго, потому что не надо проверять указатель на ноль. Но есть случаи, когда этот параметр может быть именно нулем. Тогда надо отдавать указатель.

По поводу массивов: int a[] - сишная хрень какая-то. в с++ для этого изобрели std::vector<int> (живет в #include <vector>). Использовать лучше всего его. Стоит один раз усвоить как с ним работать (и как работать с другими контейнерами из stl) и в дальшейшем можно будет избезать кучу всяких граблей при написании программ на с++.
_Ч_ вне форума Ответить с цитированием
Старый 09.01.2010, 15:04   #3
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Я про векторы знаю, просто думал не очень целесообразно его использовать, если размер массива фиксированный...
Хотя наверное буду. Спасибо!
k1r1ch вне форума Ответить с цитированием
Старый 09.01.2010, 15:12   #4
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

да, бывает и такое. но крайне редко. если уж так хочется именно массивы, то в ф-ию лучше передавать указатель на первый элемент массива и его размер. это следует из правила передавать в ф-ии большие обьекты не по значению, а по константной ссылке. Массив в общем случае - большой обьект.
_Ч_ вне форума Ответить с цитированием
Старый 09.01.2010, 16:02   #5
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Автор тебе и не надо возвращать

Ты все равно передаешь массив по адресу, по значению там другой вопрос - через структуры и прочие ухищрения, а ты в функции изменишь поля массива и они будут проводится над оригиналом массива, а не над внутрифункциональной локальной копии...

Ну или уж если прям надо - возращай int*, то бишь указатель на первый элемент, то бишь просто имя
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 09.01.2010, 16:09   #6
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от k1r1ch Посмотреть сообщение
Появилась проблема: необходимо передать массив в функцию и возвратить такой же массив. Вроде передавать понял как:
Код:
longPlus(int a[], int b[])
Но как вернуть? Пишу так - int[] - говорит ошибка.

Еще один вопрос - почему нельзя написать t = a, если это массивы из одинаковых элементов с одинаковой размерностью. Не в цикле же их копировать?
Потому что когда ты пишешь t=a, то ты пытаешь константному указателю присвоить значение другого константного указателя, они указывают на разные области памяти, в которых выделена память под эти массивы!

Имя массива - констатный указатель, т.е. указатель, значнеие которого менять нельзя, а ты выражение t=a именно и присваиваешь адрес массива а адресу t
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сложность алгоритма NiCola999 Помощь студентам 14 22.11.2009 19:33
Сложность с запросом БД k1r1ch БД в Delphi 4 27.09.2009 18:50
Сложность взлома XLS Alex Cones Свободное общение 13 29.08.2009 15:13
Требуется дописать программу на QT. За деньги, сложность низкая. Static2 Фриланс 4 27.02.2009 14:32
Сложность Алгоритма PChEL@ Помощь студентам 3 26.05.2007 07:56