Перша програма, яку ми розглянемо, - це «Hello World» - програма, яка виведе на екран рядок тексту «Hello, World!» ( «Здрастуй, світ!») І закінчить своє виконання.
Подивимося на неї уважно. Перший рядок - #include
Абревіатуру stdio можна перевести як стандартний ввід-висновок (англ. Standard input / output). Буква «h» після точки означає заголовок (англ. Header). У заголовках (які як правило представлені окремими заголовками файлами) зазвичай оголошуються надані відповідними їм бібліотеками функції, типи даних, константи і визначення препроцесора. [3]
що означає: «функція з ім'ям main. яка повертає ціле число (число типу int від англ. integer) і яка не має аргументів (void) »
Як варіант, стандарт допускає визначення функції main як функції двох аргументів (int argc і char * argv [] - імена, зрозуміло, можуть бути довільними), що використовується для отримання доступу до аргументів командного рядка з програми. В даному випадку, ця можливість не потрібно, тому функція визначена як безаргументний (що також явно дозволено стандартом.) [4]
Англійське слово void можна перевести як «порожнеча». Далі відкриваються фігурні дужки і йде тіло функції, в кінці фігурні дужки закриваються. Функція main - головна функція програми, саме з неї починається виконання програми.
Тіло функції, в свою чергу, визначає послідовність дій, виконуваних цією функцією - логіку функції. Наша функція виконує одне єдине дію:
Ця дія, в свою чергу, є виклик функції puts стандартної бібліотеки. [5] У результаті виконання цього виклику, на стандартний висновок (яким, швидше за все, виявиться екран або вікно на екрані) друкується рядок Hello, world.
Потім йде команда return 0 ;. яка завершує виконання функції з поверненням значення 0, що визначається стандартом (для функції main) як код успішного завершення. [6] [7]
Цей варіант відрізняється використанням функцій printf (замість puts) і getchar.
На відміну від функції puts. виводить передану в якості аргументу символьний рядок, перший і обов'язковий аргумент функції printf визначає формат виведення. [8]
У загальному випадку, формат складається з довільного тексту (не включає символ%) «перемішаного» з покажчиками перетворень (яка випереджає символом%). В даному випадку, однак, ця можливість не використовується і ніяких перетворень не виконується.
Зверніть увагу на інформацію, що з'явилася в строковою константі комбінацію \ n - вона включає в виведену рядок керуючий код (або керуючий символ) перекладу (також розриву або завершення) рядки. На відміну від функції puts. завжди додає цей код до виведеної рядку, printf вимагає явного його вказівки.
Чинна редакція стандарту визначає сім таких комбінацій, причому всі вони записуються за допомогою символу зворотної косої межі \ (див. ASCII коди символів). [9]
Звернемо увагу і на наступне нововведення:
Оточення, в якому запускається програма, як правило можна налаштувати так, що висновок програми буде залишатися на екрані після її виконання необмежено довго. Найпростіше це забезпечити викликаючи програму з командного інтерпретатора (який, в свою чергу, може бути запущений в вікні емулятора термінала) або (в залежності від системи) вікна Cmd.exe.
Однак, при запуску безпосередньо з графічного оточення, відведений програмою вікно може закритися відразу ж після завершення програми. Функція getchar [10] очікує введення користувача, тим самим «відкладаючи» завершення програми (return). Які саме дії можуть перервати це очікування - залежить від системи, однак можна сподіватися, що натискання клавіші ⏎ Enter завершить цю функцію в будь-якій системі.
У деяких посібниках для цієї ж мети пропонується функція getch. Однак, ця функція (на відміну від getchar) не є стандартною і, до того ж, залежна від платформи. Так, в деяких системах використання getch вимагає включення файлу curses.h і попереднього виклику функції initscr. В інших системах, однак, getch може бути оголошена в conio.h. і виконання initscr - не потрібно.
Нарешті, розглянемо наступного, що виходить за рамки стандарту. варіант цієї програми.
Використання заголовка windows.h може справити враження прийнятності цього варіанту коду в рамках тільки однієї конкретної системи. Однак, для використаного тут інтерфейсу існує і незалежна вільна реалізація - Wine. - дозволяє зібрати і виконати даний варіант на таких системах, як, наприклад, GNU / Linux. FreeBSD. Solaris і Mac OS X.