Const указатель на указатель на const int приводит к const указатель на указатель на int
но, честно говоря, я тоже борюсь с результатом этого вопроса.
Я пытаюсь разобраться в указателях в целом.
что такое const.
что является неизменяемым .
первый удар по слову «const» в Google говорит:
Вы используете ключевое слово const для объявления постоянного поля или локальной константы. Поля констант и локальные значения не являются переменными и не могут быть изменены. Константы могут быть числами, логическими значениями, строками или нулевой ссылкой. Не создавайте константу для представления информации, которую вы ожидаете изменить в любой момент.
мой пример кода
Код: Выделить всё
struct str
{
str() : c2('2')
{
//char* p = (char*)this+2;
*((char*)this+2) = '0'; // set last element in ch
// this will not compile as it try's to set the value of 'const char c2'
//c2 = '2'; // error: assignment of read-only member ‘str::c2’
// but this will compile and change the value of 'const char c2'
*((char*)((str*)this)+5) = 'X';
//str* p = (str*)this;
//char* c = (char*)(p)+5;
//*c++ = 'X';
}
char ch[3] = "00";
char c0 = '0';
char c1 = '1';
const char c2 = '2';
char c3 = '3';
char c4 = '4';
char c5 = '5';
char c6 = '6';
char c7 = '7';
char c8 = '8';
char c9 = '9';
char c_ = '\0';
const char* get_ptr() { return (const char*)this; };
};
int main()
{
str str1;
printf(str1.get_ptr());
}
Я попробовал объявить c2 как ' const char const c2 = '2';' пытаюсь смириться с неизменяемыми объектами и неизменяемыми ссылками, но это не компилируется, выдавая ошибку: дубликат 'const''
является ли 'const char c2 = '2'' неизменяемым?
реалистично, действительно ли термин «неизменяемый» по отношению к gcc действительно близок к определению «неизменяемого», поскольку я уверен, что вещи на уровне операционной системы все равно будут способны изменять блоки физических данных, не имеющие ничего общего с cpp.
Я просто упустил что-то простое, и 'const char const c2 = '2'' все равно не является неизменяемым?
пожалуйста, просто разберитесь с этим, скажите я тупой, и почему, спасибо
Подробнее здесь: https://stackoverflow.com/questions/790 ... t-pointers