Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
romedal
54 / 54 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
#1

Разница адресов - C++

03.11.2012, 22:27. Просмотров 507. Ответов 8
Метки нет (Все метки)

Здравствуйте. Подскажите, пожалуйста, почему в данном случае разница адресов равна 1, ведь под тип double выделяется 8 байт, поэтому как-бы разность смежных адресов должна давать 8 ?

C++
1
2
double g[] = {1,2,3,4,5,6,7,8};
vout<<&g[5] - &g[4]<<endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2012, 22:27     Разница адресов
Посмотрите здесь:

C++ диапазон адресов памяти - C++
Доброго времени суток! Как вывести на эран диапазон адресов памяти для данного приложения в формате от..до? И еще хотелсь бы узнать...

Создать массив адресов функций - C++
Помогите пожалуйста создать массив адресов функций. Не могу понять как записать это //вид функции bool MyFunc() { ... } ...

Структура: база сотрудников и их адресов - C++
Очень нужно написать задачу!Пожалуйста помогите) Ввести массив записей, который содержит фамилии сотрудников и адреса. Записи упорядочить...

Список IP-адресов в локальной сети - C++
Как, зная адрес и маску подсети, с помощью Windows API получить список IP всех хостов? Пингование всех возможных адресов не годится.

Возврат адресов элементов массива - C++
Здравствуйте. Подскажите пожалуйста, почему массив srr выдает адреса, а массив crr какую-то белиберду... int main() { char crr =...

Поменять значения адресов двух указателей - C++
Добрый день. Суть программы - поменять первую строку массива с той, в которой встретиться наибольшее значение элемента. Но это не суть...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
03.11.2012, 22:42     Разница адресов #2
делится на sizeof. если те же адреса вычитать приведя их к char* результат будет равен восьми.
romedal
54 / 54 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
03.11.2012, 23:24  [ТС]     Разница адресов #3
Зкачем адресс переменной типа double приводить к char* ?
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
03.11.2012, 23:26     Разница адресов #4
незачем конечно. я просто к тому, что результат операции вычитания зависит от типа указателя.
romedal
54 / 54 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
04.11.2012, 00:01  [ТС]     Разница адресов #5
Цитата Сообщение от CEBEP Посмотреть сообщение
незачем конечно. я просто к тому, что результат операции вычитания зависит от типа указателя.
До меня дошло, спасибо )))
v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
04.11.2012, 11:12     Разница адресов #6
Мне вот что-то непонятно. Объясните поподробней
Вот что у меня программа выдает:
C++
1
2
3
    cout << &g[4] << endl;   // 0012FF40
    cout << &g[5] << endl;   // 0012FF48
    cout << &g[5] - &g[4];   // 1
Действительно почему 1, если разница между адресами 8? 0012FF48 - 0012FF40 = 8
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
04.11.2012, 11:40     Разница адресов #7
Цитата Сообщение от V.A.L.I.D Посмотреть сообщение
Действительно почему 1, если разница между адресами 8? 0012FF48 - 0012FF40 = 8
Выше же СЕВЕР написал, что делиться на размер типа на который указывает указатель.
То есть результатом вычитания в данном случае является не количество байт между адресами, куда указывают указатели, а количество элементов данного типа
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
04.11.2012, 11:48     Разница адресов #8
Адресная арифметика в C и в C++ устроена так, что выражение
&g[5] - &g[4] вычисляется в количестве элементов данного типа.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 12:33     Разница адресов
Еще ссылки по теме:

Static_assert для сравнения адресов объектов - C++
Привет. Бывают такие случаи, когда вроде и понимаешь, но всё-равно что-то не получается... Почему в одном случае static_assert...

Ping по списку адресов с применением system - C++
Здравствуйте. Возникла необходимость написать консольную программу, которая проверяет Ping-ом список адресов из файла и записывает...

Реализовать перебор всех возможных IP-адресов (С++) - C++
Реализовать перебор всех возможных IP-адресов, начиная с 0.0.0.0, заканчивая 255.255.255.0. (проще говоря перебор всех возможных комбинаций...

Запись в текстовый файл адресов вместо строк - C++
Всем привет. Ребята, читаю из бинарного файла структуру и хочу все записать в текстовый файл. Структура struct Client { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
04.11.2012, 12:33     Разница адресов #9
Ты же принимаешь за данное, что *( &g[ 4 ] + 1 ) возвращает значение 5-го элемента, так почему разница между адресами 4-го и 5-го должна быть равна чему-то иному?
Yandex
Объявления
04.11.2012, 12:33     Разница адресов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru