русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Ініціалізація


Дата додавання: 2014-11-28; переглядів: 925.


Про ініціалізацію мимоходом вже згадувалося багато разів, але зважди периферійно, як частина іншої теми. Цей розділ підводить підсумок декяких правил, після того як ми оговорили різноманітні типи зберігання. У випадку відсутності явної ініціалізації, зовнішні і статичні змінні буде гарантовано надано значення нуль. Автоматичні і регістрові змінні матимуть невизначене початкове значення (тобто непотріб).

Скалярні змінні можуть бути ініційованими під час їхнього визначення шляхом додачі до їхньої назви знака рівності і виразу:

int x = 1;

char squota = '/'';

long day = 1000L * 60L * 60L * 24L; /* мілісекунд у день */

Для зовнішніх і статичних змінних, ініціалізатор повинен бути сталим виразом; ініціалізація бідбувається один раз, концептуально до того як програма починає виконуватись. Для автоматичних і регістрових змінних, ініціалізатор не обов'язково повинен бути константою: це може бути будь-який вираз, включаючи попередьно-визначенні значення, навіть виклики функцій. Так, наприклад, ініціалізацію в програмі бінарного пошуку з Розділу 3.3 може бути написано як

int binsearch(int x, int v[], int n)

{

int low = 0;

int high = n - 1;

int mid;

...

}

замість

int low, high, mid;

 

low = 0;

high = n - 1;

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

Масив може бути ініційовано через додання до оголошення списку ініціалізаторів, включених у фігурні дужки і розділених комою. Як приклад — ініціалізація масиву days з кількістю днів кожного місяця:

int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

Коли розмір масиву не вказано, компілятор обчислить його, перелічивши ініціалізатори, 12 у цьому випадку.

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

Символьні масиви — це спеціальний випадок ініціалізаторів: можна використати ланцюжок замість нотації з фігурних дужок і ком:

char pattern[] = "ould";

що є скороченням для довшого, але рівнозначного

char pattern[] = { 'o', 'u', 'l', 'd', '\0' };

У обох випадках, масив складатиметься з п'яти елементів: чотири літери і кінцевий '\0'.


<== попередня лекція | наступна лекція ==>
Структура блоків | Рекурсія


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн