Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Адрес, адрес он хранит. Адрес на известный тип. Раз тип известен, то и sizeof этого типа кимпилятору тоже известна. И тогда просто "ptr += 5" будет означать "ptr = ptr + (5 * sizeof( тип_на который_указывает_ptr ))".
Отправлено
VasilyS
(80.92.96.25)
07 мая 2010, г. 22:21
В ответ на:
Не, не так! :) Выходит, что указатель для АВэРок это и правда две или 4 ячейки памят, в которых хранят и сам адрес и коэффициент с учетом которого нужно сдвигать адрес при инкременте/декременте указателя! два байта наверное для char а 4 байта для прочих типов данных. :) Как считаете?
отправлено
Двоешник
07 мая 2010, г. 22:20
Составить ответ
|
Вернуться на конференцию
Ответы
Верно, но што же получается: указателей может быть много и на разные типы указывающих при этом. Что если в программе цикл в котором плюсуется указатель? Аткеда компилятор узнает какой там адрес у текущего эл. массива типа int на 15й итерации??? Наверняка коефициентик на которой множится лежит в самом этом поле где и адрес. Как думаешь?
-
Двоешник
(07.05.2010, 22:26:12
193.200.150.125
,
пустое
)
Текущее значение указателя компилятору пох. Он будет и будет тебе например, плюсовать адреса даже когда указываемый массив уже кончился а он херачит ++. Но указываемый тип для каждого ptr компилятор помнит с самого момента объявления этого ptr. И будет прибавлять или убавлять относительно длины этого типа.
-
VasilyS
(07.05.2010, 22:35:18
80.92.96.25
,
пустое
)
Либо для каждого типа указателей свй буферок и нпример первым членом этот самый масштабирующий ключик лежит. Че тогда 2 или 4 байта под указатель? Типа чтоб до разных адресов дотягиваться? :)
-
Двоешник
(07.05.2010, 22:28:25
193.200.150.125
,
пустое
)
Длина указателя не зависит от указываемого типа. Длина указателя - это правельно ты говоришь, "чтобы дотянуться" в огромной памяти. Для этого кроме типа при объявлении указателя пишут еще и ключ far, near, чтобы компилер знал cкока байт отводить под сам указатель. long * far x - это "под указатель отвести 3 байта, и прибавлять-убавлять указатель квантами по 4 байта".
-
VasilyS
(07.05.2010, 22:41:33
80.92.96.25
,
пустое
)
как у вас в СИ всё сложно ...
-
nestandart
(07.05.2010, 23:01:6
94.218.223.175
,
пустое
)
Ерунда. Мы вон с дружком 10летними пацанами прорубили по книжкам. Это практически макроассемблер :-)
-
VasilyS
(07.05.2010, 23:18:57
80.92.96.25
, 184 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
скольким Омам равен эквивалент двух резисторов по 10 Ом, соединённых параллельно?:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru