|
Точки и Стрелочки :), Где правильно применять "." а где "->" при обращени |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Aug 29 2011, 15:31
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Цитата(KARLSON @ Aug 30 2011, 01:58)  "." применяются со ссылками, а стрелочки с указателями. В принципе так, только я не понимаю, что есть ссылка в языке Си. То, что Вы называете ссылкой - это имя класса или структуры. Когда мы объявляем этот класс или структуру по имени, в памяти резервируется место, потребное для размещения данного объекта. Указатель же (тот, после которого идет стрелка) - это просто переменная, содержащая адрес объекта, на который она указывает. При объявлении указателя место в памяти под объект не резервируется, его можно инициализировать позже оператором new. Часто это более удобно.
|
|
|
|
|
Aug 30 2011, 07:16
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата EpCnfg[EP].pUSB_DmaDesc->DmaBufferLegtn = 1; EpCnfg - массив структур. EP - индекс массива структур EpCnfg pUSB_DmaDesc - элемент структуры EpCnfg, указатель на др. структуру DmaBufferLegtn элемент этой самой др. структуры. ..как-то так.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Aug 30 2011, 07:41
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Lexy_one @ Aug 30 2011, 11:23)  Тоесть код 1 идентичен коду 2 Операция "->" - опосредованный выбор Операция "." - прямой выбор Операция "*" - опосредование Понятно, что "опосредованный выбор" можно заменить двумя операциями "опосредование" и "прямой выбор". Правда при этом нужно учесть ещё и приоритеты (опосредование имеет более низкий приоритет по сравнению с выбором), т.е. расставить скобки в нужных местах...
|
|
|
|
|
Aug 30 2011, 07:50
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Lexy_one @ Aug 30 2011, 11:23)  Тоесть код 1 идентичен коду 2: Да Цитата Значит строка "dual->a" заменяет оператор использования указателя "(*dual).a" В С да, в С++ - не всегда (могут быть разные тонкости, если dual - класс)
|
|
|
|
|
Aug 30 2011, 08:23
|

Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 28-07-09
Из: Чернигов
Пользователь №: 51 621

|
Цитата(XVR @ Aug 30 2011, 10:50)  В С да, в С++ - не всегда (могут быть разные тонкости, если dual - класс) Да вопрос со стороны С... с С++ понятно... Спасиба за ответы. Разобрался!
Сообщение отредактировал Lexy_one - Aug 30 2011, 08:24
|
|
|
|
|
Aug 30 2011, 08:32
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(Палыч @ Aug 30 2011, 11:41)  Операция "->" - опосредованный выбор Это то, что называют синтаксическим сахаром. На самом деле, можно было бы обойтись и без введения этой дополнительной операции. Код a->b Код (*a).b одно и то же.
|
|
|
|
|
Aug 30 2011, 09:13
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(KARLSON @ Aug 29 2011, 18:58)  "." применяются со ссылками, а стрелочки с указателями. "." применяются к самим переменным, а стрелочки к указателям на них. Разумеется, переменная (как и ссылка на нее) должна быть структурой. Цитата(KARLSON @ Aug 29 2011, 18:58)  EpCnfg[EP] - это ссылка (как я понимаю EP это название структуры, что и есть ссылка), Ты неправильно понимаешь, в Си нет ссылок, их ввели в С++ в основном для того, чтобы можно было передавать параметры в функцию как по значению, так и по ссылке. Цитата(andrew_b @ Aug 30 2011, 10:41)  Ответ в любой книжке по языку Си! А разве за такие ответы здесь не положено в бан?
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|