Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
указатель на что?
Отправлено
ы
(213.79.108.215)
07 мая 2010, г. 21:19
В ответ на:
Слушайте, вот указатель как таковой, что это такое на физическом уровне?
отправлено
Двоешник
07 мая 2010, г. 20:54
Составить ответ
|
Вернуться на конференцию
Ответы
У Ритчи дочитал ,что это группа ячеек (две или 4) которые содержат адрес. То есть в коде скомпилированой программы, какие то ее части/модули/алгоритмы, создают в оперативе (так как меняться могеть) место где лежит адресок переменной, массива, структуры, функции, и собственно указателя. Теперь не могу вкурить а как же он (компилятор+код) плюсует/минусует енти указатели!?
-
Двоешник
(07.05.2010, 21:38:44
193.200.150.125
, 353 байт)
Не, не так! :) Выходит, что указатель для АВэРок это и правда две или 4 ячейки памят, в которых хранят и сам адрес и коэффициент с учетом которого нужно сдвигать адрес при инкременте/декременте указателя! два байта наверное для char а 4 байта для прочих типов данных. :) Как считаете?
-
Двоешник
(07.05.2010, 22:20:44
193.200.150.125
,
пустое
)
Адрес, адрес он хранит. Адрес на известный тип. Раз тип известен, то и sizeof этого типа кимпилятору тоже известна. И тогда просто "ptr += 5" будет означать "ptr = ptr + (5 * sizeof( тип_на который_указывает_ptr ))".
-
VasilyS
(07.05.2010, 22:21:35
80.92.96.25
,
пустое
)
Верно, но што же получается: указателей может быть много и на разные типы указывающих при этом. Что если в программе цикл в котором плюсуется указатель? Аткеда компилятор узнает какой там адрес у текущего эл. массива типа 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 изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 76:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru