Здравствуйте, observateur, Вы писали:
O>Если можно очень прошу подробно обьясните мне пожалуйста в чем разница между указателем — константы и указателем -переменным ?
Один из них нельзя менять
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, observateur, Вы писали:
O>>Если можно очень прошу подробно обьясните мне пожалуйста в чем разница между указателем — константы и указателем -переменным ?
E>Один из них нельзя менять
Здравствуйте, observateur, Вы писали:
O>Здравствуйте, Erop, Вы писали:
E>>Здравствуйте, observateur, Вы писали:
O>>>Если можно очень прошу подробно обьясните мне пожалуйста в чем разница между указателем — константы и указателем -переменным ?
E>>Один из них нельзя менять
O>это я уже знаю а подробнее можно?
почему указателя – константы нельзя инкрементировать ?
Здравствуйте, observateur, Вы писали:
O>>это я уже знаю а подробнее можно? O>почему указателя – константы нельзя инкрементировать ?
Примерно потому, почему и числа.
Вот скажем есть у тебя константа
const int two = 2;
менять её нельзя, в том числе и инкриментировать тоже.
Возможно ты путаешь константу-указатель с указателем на константу.
Правило простое.
если есть запись, скажем такая:
int **const*p;
то это обозначает, что нельзя менять то, что стоит справа от квалификатора const. В данном случае нельзя менять *p.
То есть p++, (**p)++ и даже (***p)++ допустимы, а вот (*p)++ -- нет.
Есть ещё одна особенность.
Есть нерегулярное объявление вида
const int **p;
оно всегда соответсвует регулярной записи, в которой const и имя типа просто обменялись местами.
То есть
const int **p;
int const **q;
p и q эквивалентны!
ИТОГО
int *const p;// указатель на константу p++ можно, а p[1]++ нельзя
int const *p; // указатель-константа -- p[3]++ можно, а ++p нельзя
const int *p; // эквивалентно int const * p;
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, observateur, Вы писали:
O>Если можно очень прошу подробно обьясните мне пожалуйста в чем разница между указателем — константы и указателем -переменным ?
char *p; // так обявляется указатель на charchar *const cp; // так - константный указатель на charchar const* pc; // а так - указатель на константу типа char
Вы, наверное, имеете в виду p и cp (указатель и константный указатель).
Разница в том, что p можно изменять после инициализации, а cp — нельзя. pc — можно изменять, но нельзя с его помощью изменять символ, на который он указывает.
Достаточно привести пример Страуструпа:
char *p;
// ... здесь инициализация pchar s[] = "Gorm";
const char* pc = s; // указатель на константу
pc[3] = 'g'; // ошибка: pc указывает на константу
pc = p; // правильноchar *const cp = s; // константный указатель
cp[3] = 'a'; // правильно
cp = p; // ошибка: cp является константой
int *const p;// указатель-константа: p[3]++ можно, а ++p нельзяint const *p; // указатель на константу: p++ можно, а p[1]++ нельзя const int *p; // эквивалентно int const *p;
проврался
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, observateur, Вы писали:
O>>>>Если можно очень прошу подробно обьясните мне пожалуйста в чем разница между указателем — константы и указателем -переменным ? E>>>Один из них нельзя менять O>>это я уже знаю а подробнее можно? O>почему указателя – константы нельзя инкрементировать ?
Здравствуйте, i-maverick, Вы писали:
IM>Здравствуйте, observateur, Вы писали:
O>>>>>Если можно очень прошу подробно обьясните мне пожалуйста в чем разница между указателем — константы и указателем -переменным ? E>>>>Один из них нельзя менять O>>>это я уже знаю а подробнее можно? O>>почему указателя – константы нельзя инкрементировать ?
IM>А инкремент — это не изменение?
спасибо вам за вашу помощь и терпение