Языки программирования - концепции и принципы

константы не защищает указуемый объект


Создание указателя- константы не защищает указуемый объект от изменения:

inti1,i2;

int * const p1 = &i1;                                      /* Указатель-константа */

const int * p2 = &i1;                                     /* Указатель на константу */

const int * const p3 = &i1;                           /* Указатель-константа на константу */

p1 =&i2;                                                       /* Ошибка, указатель-константа */

*p1=5                                                          /* Правильно, указуемый объект не является

                                                                        константой */

р2 =&i2;                                                       /* Правильно, указатель не является

                                                                       константой */

*р2 = 5;                                                         /* Ошибка, указуемый объект — константа */

 рЗ =&i2;                                                       /* Ошибка, указатель-константа */

*рЗ = 5;                                                         /* Ошибка, указуемый объект — константа */

В языке С указатель на void является нетипизированным указателем. Любой указатель может быть неявно преобразован в указатель на void и обратно, хотя смешанное использование присваиваний типизированных указателей обычно будет сопровождаться предупреждающим сообщением. К счастью, в C++ контроль соответствия типов делается намного тщательнее. Типизиро­ванные указатели неявно могут быть преобразованы в указатели на void, но не обратно:

void                *void_ptr;                                    /* Нетипизированный указатель */        





C

int                   *int_ptr;                                      /* Типизированный указатель */

char                *char_ptr;                                    /* Типизированный указатель */

void_ptr = int_ptr;                                              /* Правильно */


Содержание  Назад  Вперед