![]() |
|
Модераторы: bsa |
![]()
|
|
| Ratman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
Делаю, так сказать, очередной шаг в освоении ЯП. На этот раз шагнул в С и сразу по колено увяз.
Щас читаю книжку Бьярна Страустрапа "Введение в язык С++" (на самом деле лучшее, что я нашел из книжек) И посути не всё так плохо, но я окончательно запутался в двух штуках: Штука #1: То-ли он так пишет, то-ли я так читаю (в пол-второго ночи), то-ли еще чего, но я не могу понять разницы в использовании . -> :: про все три варианта книжка говоритъ "сначало объект, потом символ(ы), потом член класса объекта". Пробовал методом научного тыка - закономерности не выяснил. Компилятор ругается абсолютно неожиданно. Штука #2: int* р == объявление указателя р+1 == воздействие на указатель *р+1 == воздействие на объект по адресу. При этом (р) - указатель - 32битное число, а (*р) - объект типа int читаю далее и вижу: &объект - адрес объекта в памяти - 32битное число тип& s - объявление ссылки на объект &s - адрес объекта Думаю: создатели языка явно не дурные особи, значит это только я не вижу разницы в использовании "указателя" и "ссылки" Итого: кому вечером охота написать в двух словах в чем разница точки, 2х двоеточий и -> стрелочки ? в чем разница указателей * и ссылок & ? Это сообщение отредактировал(а) Ratman - 4.7.2008, 01:44 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ссылка это адрес переменной, а указатель это переменная храняшая ссылка
если переменная объявлена как указатель то надо обрашаться к методам, через "->" иначе через ".". A "::" для обрашения к статическим методам/переменным класса, только перед ними ставится имя класса, а не переменная обьекта |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Если доступ к элементам структур, классов и т.д осуществляется через объект, то используется операция точка.
Если доступ к элементам структур, классов и т.д осуществляется через указатель на объект, то используется операция стрелка. :: - операция разрешения области видимости и к '.' и ->'' никакого отнощения не имеет. * - указатель, переменная, значение которой равно аддреса памяти, по которому лежит значениенекоторой другой переменной. Указатели имеют широкое применение. & - ссылка, специальный тип указателя, который позволяет работать с указателем как с объектом. Хороши при использовании в функциях. Это все в кратце. Вообще с ходу старину Бьерна возможно читать не стоит. Поищи что нибудь попроще для начала. В смысле мануал. |
|||
|
||||
| bsa |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Точка отличается от стрелки только тем, что вторая нужна для доступа к полям/методам объекта по указателю на него:
|
||||||||||
|
|||||||||||
| Ratman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
спасибо всем за разъяснения
|
|||
|
||||
![]()
|
| Правила форума "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. |