реклама на сайте
подробности

 
 
> Точки и Стрелочки :), Где правильно применять "." а где "->" при обращени
Lexy_one
сообщение Aug 29 2011, 14:50
Сообщение #1


Частый гость
**

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



Вобщем вопрос в названии темы!

Вот например при разбирании чужого кода наткнулся на следующую строчку:

EpCnfg[EP].pUSB_DmaDesc->DmaBufferLegtn = 1;

В данном примере и в первом и во втором случае идет обращение к елементу структуры... Но в первом случае используется оператор "." а во втором "->" какая принципиальная разница между этими обращениями... если это сделано специально, то что хотел показать автор данного кода выбирая тот или иной оператор?

P.S. Код взят из примера USB CDC из стандартных примеров IAR ARM.

Сообщение отредактировал Lexy_one - Aug 29 2011, 14:50
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lexy_one
сообщение Aug 30 2011, 07:23
Сообщение #2


Частый гость
**

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



Тоесть код 1 идентичен коду 2:

Код 1
int summ(dual_t* dual) // принимает указатель на структуру
{
return (dual->a + dual->b); // обращаемся к полям структуры через указатель
}

Код 2
int summ(dual_t* dual) // принимает указатель на структуру
{
return ((*dual).a + (*dual).b ); // обращаемся к полям структуры через указатель
}

Значит строка "dual->a" заменяет оператор использования указателя "(*dual).a", и используется, как я понял, просто для упрощения читабельности кода?

Сообщение отредактировал Lexy_one - Aug 30 2011, 07:25
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 30 2011, 07:41
Сообщение #3


Гуру
******

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



Цитата(Lexy_one @ Aug 30 2011, 11:23) *
Тоесть код 1 идентичен коду 2

Операция "->" - опосредованный выбор
Операция "." - прямой выбор
Операция "*" - опосредование
Понятно, что "опосредованный выбор" можно заменить двумя операциями "опосредование" и "прямой выбор". Правда при этом нужно учесть ещё и приоритеты (опосредование имеет более низкий приоритет по сравнению с выбором), т.е. расставить скобки в нужных местах...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Lexy_one   Точки и Стрелочки :)   Aug 29 2011, 14:50
- - KARLSON   "." применяются со ссылками, а стрелочки...   Aug 29 2011, 14:58
|- - V_G   Цитата(KARLSON @ Aug 30 2011, 01:58) ...   Aug 29 2011, 15:31
||- - KARLSON   Разницы в принципе ни какой. Только ссылка не инкр...   Aug 29 2011, 15:39
||- - demiurg_spb   В си нет ссылок. Можно передавать данные только ли...   Aug 30 2011, 05:32
|- - 777777   Цитата(KARLSON @ Aug 29 2011, 18:58) ...   Aug 30 2011, 09:13
|- - dxp   Цитата(777777 @ Aug 30 2011, 16:13) в Си ...   Aug 30 2011, 13:08
||- - 777777   Цитата(dxp @ Aug 30 2011, 17:08) Скорее с...   Aug 30 2011, 15:06
||- - HARMHARM   Цитата(777777 @ Aug 30 2011, 18:06) А раз...   Aug 30 2011, 17:21
|- - andrew_b   Цитата(777777 @ Aug 30 2011, 13:13) А раз...   Aug 31 2011, 04:30
|- - Lexy_one   Цитата(andrew_b @ Aug 31 2011, 07:30) Нет...   Aug 31 2011, 06:44
|- - 777777   Цитата(andrew_b @ Aug 31 2011, 08:30) Нет...   Aug 31 2011, 18:10
- - andrew_b   Цитата(Lexy_one @ Aug 29 2011, 18:50) Воб...   Aug 30 2011, 06:41
- - skripach   ЦитатаEpCnfg[EP].pUSB_DmaDesc->DmaBufferLegtn =...   Aug 30 2011, 07:16
|- - andrew_b   Цитата(Палыч @ Aug 30 2011, 11:41) Операц...   Aug 30 2011, 08:32
- - XVR   Цитата(Lexy_one @ Aug 30 2011, 11:23) Тое...   Aug 30 2011, 07:50
- - Lexy_one   Цитата(XVR @ Aug 30 2011, 10:50) В С да, ...   Aug 30 2011, 08:23


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 19:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016