![]() |
|
Модераторы: bsa |
![]()
|
|
| Чoо |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
Читаю книжку Бондарева и возник вопрос.
Он пишет:
Массив транслятором воспринимается как указатель на первый элемент массива (получается не ссылка). Что ж.. Передаю указатель, и по указателю меняю значения массива А:
Пробовал передать и ссылку на массив:
После выхода из функции значения элементов массива A поменялись. На вид - разницы ни какой. Так как массив передавать правильно? -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||||||
|
|||||||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
можно так.. |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Можно так передавать, если в массиве будет меньше или больше элементов, то будет ошибка.
А для чего работать с ссылкой, и брать указатель? как вы делаете во второй функции. Это сообщение отредактировал(а) Crafty - 13.9.2010, 18:09 |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Чoо, там было написано const & а не просто &. Поэтому и поменялись. Вообще, если честно, для меня откровение передавать массив по ссылке. Я обычно передаю как const *. И то редко. Обычно массивами вообще не пользуюсь.
|
|||
|
||||
| Чoо |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
в принципе получается, что мои два варианта и предложенные ниже - практически одно и тоже (по времени и памяти)?
да.. Просто const мне не нужно было, т.к. меняю значения -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Указатель нужно разыменовывать, а ссылку нет.
|
|||
|
||||
| Чoо |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
если передавать массив как f(a), то сборщик ругается:
Это сообщение отредактировал(а) Чoо - 13.9.2010, 18:44 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Чoо, посмотрите как я передаю массив по ссылке http://forum.vingrad.ru/index.php?showtopi...t&p=2211959
|
|||
|
||||
| Чoо |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
Crafty, но такой способ не подойдет, если я буду передавать массив, размер которого определяется во время выполнения программы.
ну в принципе идея ясна. Всем спасибо, за помощь. Вопрос считаю решенным. -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
||||
|
||||
| Чoо |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
ну это естественно..
А я вообще рано начал разбираться с массивами, оказывается дальше по книге написано про мой вопрос (читаю книгу последовательно, не забегая вперед, а зря, оказывается).Объявление массива в функции:
ну и остаются способы, рассмотренные выше -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
![]()
|
| Правила форума "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. |