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

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

Войти
Регистрация
Восстановить пароль
 
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113
#1

"Увеличить указатель" - C++

18.04.2013, 16:34. Просмотров 347. Ответов 4
Метки нет (Все метки)

Добрый день. В книге Р. Лафоре ООП, написано что мы не можем увеличить адрес массива т.к. адрес является константой, но можем "увеличить указатель". Вот примерный код (в книге пример с циклом):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{
 
int arr[5] = {4,5,6,7,8};
int* temp;
 
temp = arr;
cout << temp++ << endl;
cout << temp++ << endl;
 
cout << temp << endl;
cout << temp++;
    
    
    return 0;
}
Немного не понятна суть. Мы увеличиваем таким образом сам адрес указателя? Переходим просто в новый элемент? К примеру если массив int как в данной программе, то указатель будет содержать в себе адрес на массив arr+(переход на новый элемент) т.е. 4 байта ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 16:34     "Увеличить указатель"
Посмотрите здесь:

В классе "Date" увеличить заданную дату на один день - C++
Не могу понять в чем ошибка(выдает ошибку линковки). В классе Date нужно увеличить заданную дату на один день: #include&lt;iostream&gt; ...

Как реализовать указатель "n" размерности на разные объекты? - C++
Подскажите как реализовать следующее: //есть базовый класс у которого куча производных классов с перегруженными вируальными функциями....

Ошибка C4703 используется потенциально неинициализированная локальная переменная-указатель "A" - C++
Помогите не могу понять, что не так то, уже многое перепробовал #include &quot;stdafx.h&quot; #include &lt;locale.h&gt; #include &quot;conio.h&quot; ...

Как верно выводить указатель на двумернный массив "треугольного" типа? - C++
Суть: необхоидмо создать функцию, которая возвращала бы указатель на двумерный массив &quot;треугольного&quot; типа из n строк: x xx xxx ...

нестандартный синтаксис используйте "&", чтобы создать указатель на член - C++
Здравствуйте,начал изучать классы и вот такая фигня.Кому не сложно,помогите исправить #include &quot;RECURSION_ONE.h&quot; int...

Исправить ошибку: "C4703: используется потенциально неинициализированная локальная переменная-указатель" - C++
Вообщем выдает одну ошибку в функции добавления в 76 строке, а именно &quot;Ошибка 1 error C4703: используется потенциально неинициализированная...

Ошибка "error C2109: для индекса требуется массив или указатель" - C++
Помогите, пожалуйста! Имеется программа: double f4 (double x) { double p,f; double a; int i,j; for(i=1;i&lt;=N;i++) ...

Создать класс "Студент", имеющий имя (указатель на строку), курс и идентификационный номер - C++
Создать класс студент, имеющий имя (указатель на строку), курс и идентификационный номер. Определить конструктор, деструктор и виртуальную...

C++, для чего служит указатель "this->"? - C++
Для чего нужен указатель &quot;this&quot;?

Класс "Предметный указатель" - C++
Разработать программу на языке С++ на основе объектно-ориентированного подхода, содержащей классы и объекты. Описать класс «предметный...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
18.04.2013, 16:37     "Увеличить указатель" #2
Цитата Сообщение от IvanInanovich Посмотреть сообщение
то указатель будет содержать в себе адрес на массив arr+(переход на новый элемент) т.е. 4 байта
Да. Только лучше не делать акцент на кол-ве байтов, просто сказать, что смещение будет на sizeof(int).
Точнее не адрес на массив, а адрес на эл-т массива.
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113
18.04.2013, 16:40  [ТС]     "Увеличить указатель" #3
Цитата Сообщение от Tulosba Посмотреть сообщение
Да. Только лучше не делать акцент на кол-ве байтов, просто сказать, что смещение будет на sizeof(int).
Точнее не адрес на массив, а адрес на эл-т массива.
Благодарю)
ArmanPrestige
Pied Piper
232 / 223 / 51
Регистрация: 15.01.2013
Сообщений: 849
Завершенные тесты: 1
18.04.2013, 16:41     "Увеличить указатель" #4
Чтобы легче понять, представь себе память как числовую ось. Если ты применяешь к указателю инкремент, то он "сдвигает" этот указатель на sizeof того типа, на который он указывает. Так как sizeof(int) это 4 байта, то ты сдвигаешься на 4 байта. Ты можешь применять инкремент т.к. ты знаешь, что хранится по-этому адресу, и по этой же причине ты можешь разименовать указатель. С указателем типа void такое не пройдет.
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113
18.04.2013, 16:50  [ТС]     "Увеличить указатель" #5
Цитата Сообщение от ArmanPrestige Посмотреть сообщение
Чтобы легче понять, представь себе память как числовую ось. Если ты применяешь к указателю инкремент, то он "сдвигает" этот указатель на sizeof того типа, на который он указывает. Так как sizeof(int) это 4 байта, то ты сдвигаешься на 4 байта. Ты можешь применять инкремент т.к. ты знаешь, что хранится по-этому адресу, и по этой же причине ты можешь разименовать указатель. С указателем типа void такое не пройдет.
Спасибо. Вроде все понимаю, но немного в ступор вводит. )
Yandex
Объявления
18.04.2013, 16:50     "Увеличить указатель"
Ответ Создать тему
Опции темы

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