Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Знатоки С прокоментируйте синтаксис, компилятор IAR 4.42a
Отправлено
Tolik
25 декабря 2008 г. 13:29
typedef struct{
...
unsigned char *timer;
...
}PARAMETR_Typedef;
...
unsigned char Timer;
PARAMETR_Typedef Parametr;
PARAMETR_Typedef *parametr;
...
parametr = &Parametr;
parametr->timer = &Timer;
// необходимо проинкрементировать значение Timer при помощи указателя parametr.
*(parametr->timer)++; // не работает - инкрементируется указатель
*(parametr->timer)=*(parametr->timer)+1; // работает
(*(parametr->timer))++; //работает
Составить ответ
|
Вернуться на конференцию
Ответы
А что непонятно ? Это (++ и *) операции одного приоритета, который анализируется справа налево. Вообще я не люблю запоминать приоритеты. всегда ставлю скобки.
-
Юрий_СВ
(25.12.2008 13:41:58
217.12.195.250
,
пустое
)
*p++ означает "разименовать указатель, а затем увеличить указатель"
-
Тумблер
(25.12.2008 14:57:55
194.190.167.185,194.190.161.58
,
пустое
)
В С++Билдере тоже инкрементируется указатель. Т.е. операция ++, конечно, постфиксная, но выполнится она по отношению к указателю, согласно приоритету, справа налево >>
-
Юрий_СВ
(25.12.2008 16:59:36
217.12.195.250
, 571 байт)
" *p++ " - Для любого C компилятора сначала предоставляется доступ к переменной, а затем производится инкремент указателя.
-
Тумблер
(25.12.2008 17:35:4
194.190.167.185,194.190.161.58
, 350 байт)
:) Мы же говорим одно и тоже. :)) А "Tolik" ожидал, что будет инкремент значение по указателю, а не сам указатель. Ему надо именно (*parametr->timer)++
-
Юрий_СВ
(25.12.2008 17:43:56
217.12.195.250
,
пустое
)
писдешь....
-
см
(25.12.2008 13:50:41
77.39.86.67
,
пустое
)
Да нет, все это конечно правильно, но в данном случае "++" постфиксные.
-
Quasy
(25.12.2008 16:36:31
192.168.0.207,80.243.9.34
,
пустое
)
Скобки лишние? *parametr->timer++;
-
misyachniy
(25.12.2008 13:41:36
195.10.210.194
,
пустое
)
(*parametr->timer)++
-
Каа
(25.12.2008 13:45:5
213.132.80.164
,
пустое
)
А без скобок так: *parametr->timer += 1;
-
Каа
(25.12.2008 13:59:3
213.132.80.164
,
пустое
)
По идее так нельзя. Та же проблемма.
-
Юрий_СВ
(25.12.2008 13:44:3
217.12.195.250
,
пустое
)
Зя, очень даже зя
-
Vit
(25.12.2008 14:38:6
10.0.0.3,83.170.240.226
,
пустое
)
-1 (судя по С++Билдеру) :)
-
Юрий_СВ
(25.12.2008 17:04:14
217.12.195.250
,
пустое
)
что оно делать должно зависит от того, что написали$)
-
Vit
(25.12.2008 19:48:2
10.0.0.3,83.170.240.226
,
пустое
)
Ответ:
-
Vit
(25.12.2008 19:48:8
10.0.0.3,83.170.240.226
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 56:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru