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

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

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

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

12.09.2015, 09:23. Просмотров 232. Ответов 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;    
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2015, 09:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как понять указатель константы? (C++):

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

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...

Как понять этот константный указатель? - C++
В общем, имеется класс Cat. Объект класса - SimpleCat. И имеется функция с константым указателем: const SimpleCat* const...

Расскажите, как здесь работает указатель на указатель? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;rus&quot;); ...

Почему указатель на указатель объявляется как float **A; - C++
Почему float?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
12.09.2015, 09:50 #2
Особенность массива.
0
Kerry_Jr
Модератор
Эксперт PHP
2192 / 1988 / 696
Регистрация: 14.05.2014
Сообщений: 5,825
Записей в блоге: 1
Завершенные тесты: 5
12.09.2015, 09:56 #3
Цитата Сообщение от shynarG Посмотреть сообщение
Т.е. intarray - адрес в памяти, который хранится до окончания работы программы (по лафоре)
Цитата Сообщение от shynarG Посмотреть сообщение
а если массив будет объявлен внутри блока (функции, цикла и т.д.), то он будет хранится до окончания работы блока
А теперь смотрите какая простая штука: массив объявлен внутри функции main, а работа программы начинается с вызова функции main и завершается по окончании работы main.
1
Ferrari F1
=^_^=
571 / 458 / 94
Регистрация: 27.01.2015
Сообщений: 2,696
Записей в блоге: 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]; // указатель на константу
0
Evg
Эксперт CАвтор FAQ
17826 / 6036 / 388
Регистрация: 30.03.2009
Сообщений: 16,567
Записей в блоге: 26
12.09.2015, 12:43 #5
Цитата Сообщение от shynarG Посмотреть сообщение
Почему *intarray++ не допускается
Имя массива в выражениях трактуется не как переменная-массив, а как адрес самого первого элемента (т.е. немодифицируемое значение) - Ошибка Lvalue required
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2015, 12:43
Привет! Вот еще темы с ответами:

Стек на основе массива структур - эт как понять читаю литературу и не могу понять! - C++
Стек статически (на основе массива структур). Пример структура &quot;Товар&quot; которая включает в себя: № по каталогу(ключ), Название, цена, срок...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

[trigraph] Как отключить? Как устранить триграф из литерной константы? - C++
Доброго времени суток. Сборка Debug при помощи mingw482_32. Возникла проблема с триграфами. Вообще то, я всегда думал, что...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.09.2015, 12:43
Ответ Создать тему
Опции темы

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