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

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

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

Как понять указатель константы? - C++

12.09.2015, 09:23. Просмотров 229. Ответов 4
Метки нет (Все метки)

Добрый день! Почему *intarray++ не допускается. Если она константа/указатель константы (по лафоре) почему рядом в объявлении нет спецификатора const? Т.е. intarray - адрес в памяти, который хранится до окончания работы программы (по лафоре). Однако он не объявлен как static или глобальная переменная, а если массив будет объявлен внутри блока (функции, цикла и т.д.), то он будет хранится до окончания работы блока. Подскажите пожалуйста как понять?

C++
1
2
3
4
5
6
7
8
int main ()
{
    int intarray [] = {31,54,77,52,93};
    int * ptrint;
    ptrint = intarray;
 
    cout <<*ptrint++<<" - "<< *intarray++<<endl;    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2015, 09:23     Как понять указатель константы?
Посмотрите здесь:

Не могу понять, как правильно передать указатель на объект в файл - C++
Есть вектор v, который надо отсортировать. Есть класс MergeSort, который это должен делать, он содержит в качестве параметра указатель на...

Как компилятор сохраняет константы? - C++
Вопрос такой. Компилятор на этапе компиляции умножает константы в коде типа 1000 * 5, M_PI * 5 или допустим если функция несколько раз...

Как задаются строковые константы? - C++
Можете привести примеры

Как/где размещаются строковые константы - C++
вызываю какую нибудь функцию и передаю туда текст, например myfunc(&quot;some text&quot;) когда выделяется память под текст? когда эта память...

Как быстро найти константы в уравнении плоскости? - C++
Как быстро найти константы A, B, C и D в уравнении плоскости (A * x + B * y + C * z + D = 0) ? Я делаю с помощью перебора в...

Как правильно объявить константы для всего проекта, который состоит из нескольких файлов - C++
какой-нибудь Variables.h в котором будет что-то типа: #define A 50 #define B 40 или const int A 50

Сделать указатель на указатель NULL - C++
есть код: class Matrix { private: double **data; //нужно, чтобы в самом начале это было NULL double *b; //и это тоже было NULL ...

Задача на указатели.Указатель на указатель. - C++
Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежащие главной диагонали равны 0, а...

Зачем использовать Указатель на указатель? - C++
Подскажите зачем использовать Указатель на указатель? И как работают двумерные массивы за счет указателей?

Указатель на указатель - разница способов - C++
int a =5; int *b = &amp;a; int **e =&amp;b; //первый способ //Нужно писать столько * скока указателей.. int *f = b; //Втрой...

Указатель на указатель заполнение матрицы - C++
Помогите как самому вбивать матрицу скоко на скоко и элементы этой матрицы ( без функций ) используя только &lt;iostream&gt;. (помощь)

Указатель на указатель заполнение матрицы - C++
Напишите как самому вбивать матрицу скок на скока и каждый элемент в нем (заранее спасибо)!


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5247 / 4567 / 1534
Регистрация: 14.04.2014
Сообщений: 18,161
12.09.2015, 09:50     Как понять указатель константы? #2
Особенность массива.
Kerry_Jr
Модератор
Эксперт PHP
2178 / 1974 / 689
Регистрация: 14.05.2014
Сообщений: 5,773
Записей в блоге: 1
Завершенные тесты: 5
12.09.2015, 09:56     Как понять указатель константы? #3
Цитата Сообщение от shynarG Посмотреть сообщение
Т.е. intarray - адрес в памяти, который хранится до окончания работы программы (по лафоре)
Цитата Сообщение от shynarG Посмотреть сообщение
а если массив будет объявлен внутри блока (функции, цикла и т.д.), то он будет хранится до окончания работы блока
А теперь смотрите какая простая штука: массив объявлен внутри функции main, а работа программы начинается с вызова функции main и завершается по окончании работы main.
Ferrari F1
=^_^=
551 / 438 / 93
Регистрация: 27.01.2015
Сообщений: 2,551
Записей в блоге: 1
Завершенные тесты: 1
12.09.2015, 12:34     Как понять указатель константы? #4
shynarG, с динамическими массивами знаком? если да, то по поведению его можно сделать схожим с обычным массивом определенного размера.
C++
1
2
3
4
5
int intarray1[5];
int* const intarray2 = new int[5]; // создаем так называемый "константый указатель"
// указатель ни того, ни другого не сместить
// а в этой ситуации запросто
int* intarray3 = new int[5]; //можно потом написать intarray3++
Добавлено через 9 минут
и кстати, не слудует путать:
C++
1
2
int* const intarray2 = new int[5]; // константный указатель
int const* intarray2 = new int[5]; // указатель на константу
Evg
Эксперт CАвтор FAQ
17533 / 5771 / 369
Регистрация: 30.03.2009
Сообщений: 15,872
Записей в блоге: 26
12.09.2015, 12:43     Как понять указатель константы? #5
Цитата Сообщение от shynarG Посмотреть сообщение
Почему *intarray++ не допускается
Имя массива в выражениях трактуется не как переменная-массив, а как адрес самого первого элемента (т.е. немодифицируемое значение) - Ошибка Lvalue required
Yandex
Объявления
12.09.2015, 12:43     Как понять указатель константы?
Ответ Создать тему
Опции темы

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