|
указатель на указатель |
|
|
|
 |
Ответов
|
Oct 12 2012, 20:18
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(toweroff @ Oct 12 2012, 22:32)  надо - записать что-то по адресу самой переменной, на которую ссылается указатель, после чего этот указатель увеличить
то есть, я так мыслю, получится *(*ptr++) = value; value-то запишется, но если передается в функцию, то ptr- параметр функции, то есть не сохранится. Можно передать его в функцию как ссылку. Типа так: Код void SetPtr(uint8_t *&p, uint8_t new_value) { (*p++)=new_value; } uint8_t Buf0[8], Buf1[4];
uint8_t * p[2]={&Buf0[2], &Buf1[0]}; int main() { SetPtr(p[0], 100); SetPtr(p[1], 200); SetPtr(p[1], 300);
|
|
|
|
|
Oct 12 2012, 20:47
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(_Артём_ @ Oct 13 2012, 00:18)  value-то запишется, но если передается мне в функцию, то ptr- параметр функции, то есть не сохранится. Можно передать его в функцию как ссылку. это я понимаю, что параметр не сохраняется. Это просто значение. Но оно указывает на указатель, который указывает на переменную. То есть, если я в функции разыменую это дело -- получу указатель, который могу изменить? И, разыменовывая этот уже разыменованный указатель, получу саму переменную Сейчас попробую, спасибо.. я уж тут для скорости в виртуалку добрый старый борландец кинул ))) UPD да, в плюсах работает... в сях бы, кейл матерится на конструкции *&
|
|
|
|
|
Oct 12 2012, 21:26
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(toweroff @ Oct 12 2012, 23:47)  То есть, если я в функции разыменую это дело -- получу указатель, который могу изменить? И, разыменовывая этот уже разыменованный указатель, получу саму переменную Что в этом есть, но чото под вечер не соображу... Цитата(toweroff @ Oct 12 2012, 23:47)  Сейчас попробую, спасибо.. я уж тут для скорости в виртуалку добрый старый борландец кинул ))) В самом бы кейле и проверять надо. Я на ARMGCC проверял - работает (было бы странно если бы не заработало). Цитата(toweroff @ Oct 12 2012, 23:47)  UPD да, в плюсах работает... в сях бы, кейл матерится на конструкции *&  Кейл - он же тоже ++ (видел есть у него примеры то ли с STL. то ли просто с template). Это по умолчанию, он прикидывается что только СИ древней версии, надо в настройках проекта искать, как его ++-режим включить(или версию си поновей включить). И зачем вообще "присто си"?
|
|
|
|
|
Oct 12 2012, 21:33
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(_Артём_ @ Oct 13 2012, 01:26)  Кейл - он же тоже ++ (видел есть у него примеры то ли с STL. то ли просто с template). Это по умолчанию, он прикидывается что только СИ древней версии, надо в настройках проекта искать, как его ++-режим включить(или версию си поновей включить). И зачем вообще "присто си"? да нет, в кейле наоборот есть галка "Strict ANSI C", которая выключена тоже сил уже нет, пободаюсь немного, да спать... но собака порылась где-то рядом, хочется на костях поплясать
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|