Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2013, 21:13   #11
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Как это считается?Мне завтра объяснить надо будет.Да и самому интересно.
East Undia Trading вне форума Ответить с цитированием
Старый 26.12.2013, 22:06   #12
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

BDA, как это происходит, мне нужно это знать и уметь объяснять.
East Undia Trading вне форума Ответить с цитированием
Старый 26.12.2013, 22:15   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Цитата:
Адресная арифметика (address arithmetic) - это способ вычисления адреса какого-либо объекта при помощи арифметических операций над указателями, а также использование указателей в операциях сравнения. Адресную арифметику также называют арифметикой над указателями (pointer arithmetic).

Согласно стандартам языка Си и Си++, при арифметике с указателями, результирующий адрес должен оставаться строго на границе единичного объекта массива (или следовать сразу за ним). Сложение или вычитание указателя сдвигает его на величину, кратную размеру того типа данных, на который он указывает. Пример. Пусть есть указатель на массив 4-байтных целых. Инкремент этого указателя приведет к увеличению его значения на 4 (размер элемента). Такой эффект часто используется для увеличения указателя для того, чтобы он указывал на следующий элемент в смежном массиве целых чисел.

Арифметика с указателями не может быть применена к указателям на неизвестные типы, поскольку неизвестные типы не имеют размера, и соответственно адрес, на который ссылается указатель, не может быть прибавлен к нему. Однако, иногда существуют нестандартные расширения компилятора, позволяющие выполнять байтовую арифметику на нетипизированных указателях (void *).
Собственно всё.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.12.2013, 22:18   #14
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

BDA, про то как смещаются адреса, когда мы прибавляем три у вычитаем два?
East Undia Trading вне форума Ответить с цитированием
Старый 27.12.2013, 00:19   #15
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Кто-нибудь, вроде в шестнадцатеричной системе считается?
East Undia Trading вне форума Ответить с цитированием
Старый 27.12.2013, 00:29   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Просто адреса принято выводить в шестнадцатеричной сс.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.12.2013, 00:35   #17
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

BDA, дак а как считается то? 2*8=16 бит и потом это прибавляем к адресу?
East Undia Trading вне форума Ответить с цитированием
Старый 27.12.2013, 01:11   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Только не бит, а байт (я описался, раньше).
адрес += 2. Сдвинуть адрес на 2 элемента вправо. Сдвинуть адрес на 2 * (размер элемента в байтах) байт вправо.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 27.12.2013, 08:59   #19
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

BDA, я понимаю что адрес получается сдвигом вправо на два.Как это правильно посчитать?
East Undia Trading вне форума Ответить с цитированием
Старый 27.12.2013, 11:09   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да выше ше написано:
Цитата:
Сдвинуть адрес на 2 * (размер элемента в байтах) байт вправо.
т.е. Адрес=Адрес+2*(Размер переменки в байтах)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу salomon93 Паскаль, Turbo Pascal, PascalABC.NET 11 01.12.2011 23:36
адресная арифметика sterh11001100 Microsoft Office Excel 1 08.12.2010 13:20
Адреса переменных rommster Visual C++ 1 26.11.2010 08:35
Адресная арифметика и матрица. GrindeX Общие вопросы C/C++ 8 08.03.2010 15:03
Адресная книга Snake_ua PHP 6 26.02.2008 09:40