| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Разбираемся с основами |
| Автор: Ratman 4.7.2008, 01:42 |
| Делаю, так сказать, очередной шаг в освоении ЯП. На этот раз шагнул в С и сразу по колено увяз. Щас читаю книжку Бьярна Страустрапа "Введение в язык С++" (на самом деле лучшее, что я нашел из книжек) И посути не всё так плохо, но я окончательно запутался в двух штуках: Штука #1: То-ли он так пишет, то-ли я так читаю (в пол-второго ночи), то-ли еще чего, но я не могу понять разницы в использовании . -> :: про все три варианта книжка говоритъ "сначало объект, потом символ(ы), потом член класса объекта". Пробовал методом научного тыка - закономерности не выяснил. Компилятор ругается абсолютно неожиданно. Штука #2: int* р == объявление указателя р+1 == воздействие на указатель *р+1 == воздействие на объект по адресу. При этом (р) - указатель - 32битное число, а (*р) - объект типа int читаю далее и вижу: &объект - адрес объекта в памяти - 32битное число тип& s - объявление ссылки на объект &s - адрес объекта Думаю: создатели языка явно не дурные особи, значит это только я не вижу разницы в использовании "указателя" и "ссылки" Итого: кому вечером охота написать в двух словах в чем разница точки, 2х двоеточий и -> стрелочки ? в чем разница указателей * и ссылок & ? |
| Автор: mes 4.7.2008, 02:00 |
| ссылка это адрес переменной, а указатель это переменная храняшая ссылка если переменная объявлена как указатель то надо обрашаться к методам, через "->" иначе через ".". A "::" для обрашения к статическим методам/переменным класса, только перед ними ставится имя класса, а не переменная обьекта |
| Автор: mrbrooks 4.7.2008, 07:47 |
| Если доступ к элементам структур, классов и т.д осуществляется через объект, то используется операция точка. Если доступ к элементам структур, классов и т.д осуществляется через указатель на объект, то используется операция стрелка. :: - операция разрешения области видимости и к '.' и ->'' никакого отнощения не имеет. * - указатель, переменная, значение которой равно аддреса памяти, по которому лежит значениенекоторой другой переменной. Указатели имеют широкое применение. & - ссылка, специальный тип указателя, который позволяет работать с указателем как с объектом. Хороши при использовании в функциях. Это все в кратце. Вообще с ходу старину Бьерна возможно читать не стоит. Поищи что нибудь попроще для начала. В смысле мануал. |
| Автор: bsa 4.7.2008, 16:58 | ||||||||||
Точка отличается от стрелки только тем, что вторая нужна для доступа к полям/методам объекта по указателю на него:
|
| Автор: Ratman 4.7.2008, 20:40 |
| спасибо всем за разъяснения |