Що означає const stack overflow російською

Такі записи найпростіше розглядати справа наліво. наприклад,

оголошує покажчик з ім'ям blah_blah. який вказує на константний покажчик (так як кваліфікатор const передує *, якщо дивитися справа наліво), який вказує на константний об'єкт типу char.

На консоль буде виведено

Можна ввести typedef імена для наочності

в цьому випадку змінна blah_blah є покажчиком на константний вказівник на константний об'єкт типу char.

Покажчик в стандарті C визначається наступним чином

тобто за знаком * може слідувати список кваліфікації, який до нього ставиться.

Ось демонстраційна програма, в якій сам покажчик blah_blah також оголошений як константний.

Нижче представлена ​​така програма

(З ряду ось виходить тільки ваш останній приклад, де крайній правий const задає константность самого покажчика integer. А не шляхи доступу до указуемому об'єкту.)

Якщо один і той же об'єкт видно вам як через константний, так і через неконстантний шлях доступу, то модифікація цього об'єкта, зроблена через неконстантний шлях доступу, буде тут же видно через константний шлях доступу

Тобто ваші модифікатори const не говорять про те, що указуемий об'єкт не може змінюватися. Вони лише не дають вам модифікувати указуемий об'єкт саме через цей шлях доступу. Таким чином управління константністю шляху доступу є в основному засобом самодисципліни. Однак в коді, з самого початку грамотно і активно використовує константность об'єктів, обійтися без використання цього засобу неможливо.

Правила константної коректності мови С і С ++ дозволяють вам вільно перетворювати неконстантние шляху доступу в константні

але зворотне перетворення неможливо. (Шляхом використання const_cast або C-style cast можна "грубою силою" перетворювати константні шляху доступу в неконстантние, але це вже інша історія.)

Можна додатково зауважити, що правила константної коректності мов С і С ++ дещо відрізняються, що призводить до ряду зберігаються донині "нелогічностей" в мові С, давно усунених в мові С ++

Це часом заважає повноцінно користуватися константними шляхами доступу в С.

Оптимізацію в таких ситуаціях покращують restrict і правило strict-aliasing. І якщо вони "спрацьовують", то корисний оптимізаційний ефект від цього ніяк не залежить від наявності або відсутності const. З цієї причини можна стверджувати, що константність указуемих об'єктів - це не більше ніж засіб самодисципліни. - AnT 17 Лютого о 23:48

Схожі статті