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

арифметические действия с указателями не работают - C++

Восстановить пароль Регистрация
 
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.06.2013, 08:28     арифметические действия с указателями не работают #1
На одном сайте (http://www.c-cpp.ru/books/arifmetich...s-ukazatelyami) написано, что с при увеличении указателя на единицу, значение по его адресу увеличится на длину его типа, например:
C++
#include <iostream>
using namespace std ;
 
int main ()
{
    int n = 40 ;
 
    int *p = &n ;
 
    p ++ ;
 
    cout << *p << endl ; // должно быть 44
}
Почему в результате не получается 44 ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
20.06.2013, 08:47     арифметические действия с указателями не работают #2
Вы не так поняли автора статьи. Он имел ввиду, что если увеличить адрес на один, то его фактический адрес увеличиться на размер типа в байтах.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 08:49     арифметические действия с указателями не работают #3
Цитата Сообщение от programina Посмотреть сообщение
На одном сайте (http://www.c-cpp.ru/books/arifmetich...s-ukazatelyami) написано, что с при увеличении указателя на единицу, значение по его адресу увеличится на длину его типа,
Там про другое написано, про адреса. Там, под содержанием указателя, имеется в виду адрес, который содержится в нём.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.06.2013, 08:53  [ТС]     арифметические действия с указателями не работают #4
Пaтрик, там написано, что указатель ссылается на целое число 2000, которое превратится в 2002 после инкримента, то на длину типа short int
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 08:56     арифметические действия с указателями не работают #5
Цитата Сообщение от programina Посмотреть сообщение
Пaтрик, там написано, что указатель ссылается на целое число 2000, которое превратится в 2002 после инкримента, то на длину типа short int
Там так написано:
...Для понимания арифметических действий с указателями предположим, что p1 - это указатель на целое, содержащий значение 2000, ...
Указатель на целое (значение этого целого не указано), содержит значение 2000 - адрес этого целого (значение, которого не указано). Написано, просто, не очень удачно.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.06.2013, 08:59  [ТС]     арифметические действия с указателями не работают #6
alsav22, то есть значение адреса равно 2000?

Добавлено через 1 минуту
Спасибо, теперь понятно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 09:06     арифметические действия с указателями не работают
Еще ссылки по теме:

Указатели и действия над указателями C++
Арифметические действия в массиве C++
Арифметические действия над числами C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.06.2013, 09:06     арифметические действия с указателями не работают #7
Цитата Сообщение от programina Посмотреть сообщение
то есть значение адреса равно 2000?
Да. В арифметике указателей, разговор идёт именно об адресах, которые содержатся в указателях (значениях указателей). О том, что эти адреса изменяются не так, как другие значения в обычной арифметике.
Yandex
Объявления
20.06.2013, 09:06     арифметические действия с указателями не работают
Ответ Создать тему
Опции темы

Текущее время: 02:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru