Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 1.17.2 Модифікатори сопзі і уоіаіііе - Програмування С, С++теорія та практика (частина 1) - Studbook
Главная->Інформатика та програмування->Содержание->1.17.2 Модифікатори сопзі і уоіаіііе

Програмування С, С++теорія та практика (частина 1)

1.17.2 Модифікатори сопзі і уоіаіііе

Про модифікатор соті йшла мова в розділі 1.2.3.”Константи”. Модифікатор соті не допускає явного присвоювання змінній або інших дій, що можуть вплинути на зміну її значення, таких як виконання операції інкременту і декременту. Значення покажчика, що оголошений з модифікатором соті, не може бути зміненим, на відміну від значення об’єкта, на який він вказує.

Модифікатори уоїаґіїе і соті протилежні за змістом.

Модифікатор уоїаґіїе вказує на те, що значення змінної може бути зміненим; але не тільки безпосередньо програмою, а також і зовнішнім впливом (наприклад, програмою обробки переривань, або, якщо змінна відповідає порту введення/виведення, обміном із зовнішнім пристроєм). Оголошення об’єкта з модифікатором уоїаґіїе попереджує компілятор мови Сі, чого не слід робити

Можливим також є одночасне використання в оголошенні модифікаторів соті і уоїаґіїе. Це означає, що значення змінної не може модифікуватися програмою, але піддається зовнішньому впливу.

Якщо з модифікатором соті або уоїаґіїе оголошується змінна складеного типу, то дія модифікатора розповсюджується на всі його складові елементи.

Примітка. При відсутності в оголошенні специфікації типу і присутності модифікатора соті або уоїаґіїе мається на увазі тип іпґ.

Приклади:

£1оа£ сопз'Ь рі=3.14159265 ; сопз'Ь тахіп'Ь=32767;

сЬаг *сопз£ з£г= "Деякий рядок."; /* покажчик-константа */ сЬаг сопз£ *з£г2= „Рядок";/* покажчик на константний рядок */

Із врахуванням наведених вище оголошень наступні оператори неприпустимими.

рі=3.0;      /* присвоювання значення константі */

і=тахіп-Ь- - ; /*          зменшення константи */

з-Ьг="0-ЬЬег з-Ьгіпд"; /* присвоювання значення константі -

покажчику */

Однак виклик функції §1гсру(8іг,”8ігіп£”); припустимий, так як в даному випадку здійснюється посимвольне копіювання рядка в область пам’яті, на яку вказує покажчик.

Аналогічно, якщо покажчик на тип соті присвоїти покажчику на тип, відмінний від соті, то через отриманий покажчик можна здійснювати присвоювання.

 

84