|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.01.2010, 14:36 | #1 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Сложность с массивами
Появилась проблема: необходимо передать массив в функцию и возвратить такой же массив. Вроде передавать понял как:
Код:
Еще один вопрос - почему нельзя написать t = a, если это массивы из одинаковых элементов с одинаковой размерностью. Не в цикле же их копировать? |
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 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Я про векторы знаю, просто думал не очень целесообразно его использовать, если размер массива фиксированный...
Хотя наверное буду. Спасибо! |
09.01.2010, 15:12 | #4 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
да, бывает и такое. но крайне редко. если уж так хочется именно массивы, то в ф-ию лучше передавать указатель на первый элемент массива и его размер. это следует из правила передавать в ф-ии большие обьекты не по значению, а по константной ссылке. Массив в общем случае - большой обьект.
|
09.01.2010, 16:02 | #5 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
Автор тебе и не надо возвращать
Ты все равно передаешь массив по адресу, по значению там другой вопрос - через структуры и прочие ухищрения, а ты в функции изменишь поля массива и они будут проводится над оригиналом массива, а не над внутрифункциональной локальной копии... Ну или уж если прям надо - возращай int*, то бишь указатель на первый элемент, то бишь просто имя
Если я помог вам - порадуйте меня, нажмите на весы слева
|
09.01.2010, 16:09 | #6 | |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
Цитата:
Имя массива - констатный указатель, т.е. указатель, значнеие которого менять нельзя, а ты выражение t=a именно и присваиваешь адрес массива а адресу t
Если я помог вам - порадуйте меня, нажмите на весы слева
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сложность алгоритма | 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 |