![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Astoret |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.4.2009 Репутация: 1 Всего: 1 |
При написании программы столкнулся с двумя вопросами на которые не смог найти ответ:
Как передать массив после выполнения функции? После поиска нашел ответ что нужно передавать указатель на первый элемент массива и количество элементов в массиве, но тут и возник вопрос: Предположим у нас есть указатель на первый элемент массива, тип данных и количество элементов но как после этого привести все это к привычному виду - Out[20]
|
|||
|
||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Astoret, если ты пишешь на С++, то может стоит обратить внимание на std::vector? Его можно возвращать.
Как вариант (для Си), можно написать так:
Если размер массива постоянный, можно его передавать через структуру:
|
||||
|
|||||
Andrey44 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Так делать нельзя, нельзя возвращать указатель на локальную переменную.
-------------------- ????? ??, ??????? ?????. ![]() |
||||
|
|||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
В данном контексте разве нельзя? Память под массив после отработки функции не удаляется, а значение указателя копируется в другую переменную. По-моему криминала нет. Другое дело, что нужно заботиться об освобождении памяти тому кто "не знает" как она выделялась - это не красиво. ------------------------------------------------------------------------------------------------------------------------------- Здесь память можно было выделить до вызова GetCoord, а в функции заполнить массив. Это сообщение отредактировал(а) Albor - 16.4.2009, 15:47 |
|||
|
||||
Astoret |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.4.2009 Репутация: 1 Всего: 1 |
Теперь я понял почему это сработало, я для пробы делал так:
Это сообщение отредактировал(а) Astoret - 16.4.2009, 15:52 |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
||||
|
||||
NDQuattro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 18.7.2008 Где: Украина Репутация: нет Всего: нет |
не лучше будет передать ссылку?
омг, а компилер редкий, ф-ия main() типа void./ |
|||
|
||||
Dov |
|
||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Ты уже его получил, только не понял этого. ![]() Вот же он:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||
|
|||||
Astoret |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 16.4.2009 Репутация: 1 Всего: 1 |
точно, вышло так:
to bsa, попробовал, вышло:
а векторы не хочется применять, у меня цель разобраться но учту на будущее. З.Ы. Всем спасибо, похоже в этом немного разобрался Это сообщение отредактировал(а) Astoret - 16.4.2009, 16:36 |
||||||
|
|||||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Astoret, у тебя ещё выход за границы массива есть в двух местах. И память не забудь освободить. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: 1 Всего: 1 |
а у меня такой вопрос можно ли использовать что в качестве параметра в функцию передаётся ссылка на мосив в котом я хочу релучить результат ?
корректно ли такое использование или могут быть последствия ? |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
записывайте. главное за пределы массива не выходите. Добавлено через 56 секунд
|
|||
|
||||
NDQuattro |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 18.7.2008 Где: Украина Репутация: нет Всего: нет |
mrbrooks, думаю, но не уверен, может быть я слишком мало компиляторов испытал)
|
|||
|
||||
Garcian |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
NDQuattro, у нас весь универ на "редком компиляторе" работает)
--------------------
Неродивый студент |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |