C установка IDE C структура програми C змінні C типи даних С функція printf C константи C арифметичні операції C операції порівняння і логічні операції C порозрядні операції C операції присвоювання C перетворення типів C умовні конструкції C цикли С масиви і рядки С функція scanf C препроцесор. Директива #include C #define директива C макроси C умовна компіляція C функції. Визначення та опис функцій C функції. Передача параметрів в функцію C функції. Повернення результату з функції C функції. Рекурсивні функції C область видимості змінних C зовнішні об'єкти C вказівники C вказівник. Операції з вказівниками C покажчики. Арифметика покажчиків C покажчики. Константи і покажчики C покажчики. Покажчики та масиви C покажчики. Масиви покажчиків, рядки і багаторівнева адресація C покажчики. Покажчики в параметрах функції C покажчики. Динамічна пам'ять C покажчики. Покажчик як результат функції C покажчики. Управління динамічної пам'яттю C покажчики. Покажчики на функцію C покажчики. Покажчики на функції як параметри і результати функцій C покажчики. Функції зі змінною кількістю параметрів C struct. Визначення структур C struct. Структури як елементи структур C struct. Покажчики на структури C struct. Масиви структур C struct. Структури і функції C struct. union об'єднання C struct. Бітові поля С file. Введення-виведення і робота з файлами C file. Читання і запис бінарних файлів C file. Читання і запис структур в файл C file. Читання і запис текстових файлів C file. Форматування вводу-виводу C file. Позиціонування в потоці C file. Консольне введення-виведення

C структура програми


Основи мови C (Сі)


Структура програми на Сі

Програма на мові Сі складається з набору директив препроцесора, визначень функцій і глобальних об'єктів. Директиви препроцесора управляють перетворенням тексту до його компіляції. Глобальні об'єкти визначають використовувані дані або стан програми. А функції визначають поведінку або дії програми.

#include <stdio.h>

int main(void)
{
    printf("Hello world! \n");  // виведе в консоль Hello world!

    return 0;
}

// RESULT:
// Hello world!
// 

інструкції

Найпростішим будівельним елементом програми на Сі є інструкції (statements). Кожна інструкція виконує певну дію. В кінці інструкцій в мові Сі ставиться крапка з комою ( ; ). Цей символ вказує компілятору на завершення інструкції. наприклад:

printf("Hello world!");

Виклик функції printf , яка виводить на консоль рядок " Hello world! " є інструкцією і завершується крапкою з комою.

Набір інструкцій може представляти блок коду. Блок коду оформляється фігурними дужками, інструкції, складове тіло цього блоку, поміщаються між відкриваючими і закриваючими фігурними дужками:

{
    printf("Hello world!");
    printf("Bye world!");
}   

У цьому блоці коду дві інструкції. Обидві інструкції представляють виклик функції printf() і виводять певний рядок на консоль.


директиви препроцесора

Для виведення даних на консоль в прикладі вище використовується функція printf() , але щоб скористатися цією функцією, щоб вона стала нам доступна в програмі на Сі, необхідно на початку файлу з вихідним кодом підключати заголовки stdio.h за допомогою директиви include .

Директива include є директивою препроцесора. Крім даної include є ще ряд директив препроцесора, наприклад, define .

Кожна директива препроцесора розміщується на одному рядку. І на відміну від звичайних інструкцій мови Сі, які завершуються крапкою з комою ; , Ознакою завершення препроцесорної директиви є перенесення на новий рядок. Крім того, директива повинна починатися зі знака решітки # .

Безпосередньо директива " include " визначає, які файли треба включити в даному місці в текст програми. За замовчуванням ми можемо підключати стандартні файли з каталогу, які зазвичай постачаються разом зі стандартними бібліотеками компілятора. І файл " stdio.h " якраз є одним з таких заголовків файлів.

Взагалі сам термін "заголовки" (header file) передбачає включення тексту файлу саме в початок або заголовок програми. Тому заголовки підключаються, як правило, на початку вихідного коду. Крім того, заголовки повинні бути підключені до виклику тих функцій, які він визначає. Тобто, наприклад, файл stdio.h зберігає визначення функції printf , тому цей файл необхідно підключити до виклику функції printf .

Але в цілому директиви препроцесора необов'язково повинні бути розміщені на початку файлу.

При компіляції вихідного коду спочатку спрацьовує препроцесор, який сканує вихідний код на наявність рядків, які починаються з символу # . Ці рядки розцінюються препроцесором як директиви. І на місці цих директив відбувається перетворення тексту. Наприклад, на місці директиви #include <stdio.h> вставляється код з файлу stdio.h.


функція main

Стартовою точкою в будь-яку програму на мові Сі є функція main () . Саме з цієї функції починається виконання програми. Її ім'я main фіксоване і для всіх програм на Сі завжди однакове.

Функція також є блоком коду, тому її тіло обрамляється фігурними дужками, між якими йде набір інструкцій.

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

#include <stdio.h>

void main()
{
    printf("Hello world!");     // Hello world!
}

або

#include <stdio.h>

int main()
{
    printf("Hello world!");
    return 0;
}

Використання цих визначень не було б помилкою, і програма також вивела б рядок " Hello world " на консоль. І для більшості компіляторів це було б нормально.

Далі ми докладніше розглянемо визначення функцій, але тут треба враховувати такий аспект. Визначення функції в вигляді int main(void) зафіксовано в стандарті мови С11. Компілятори перш за все орієнтуються на стандарт мови, його специфікацію. Тому якщо ми використовуємо то визначення, яке дано в стандарті мови, то більший шанс, що воно буде підтримуватися всіма компіляторами. Хоча знову ж таки повторюся, в використанні другого варіанта або int main() великої помилки не буде.

Повністю останній стандарт C11 можна подивитися по посиланню .


Коментарі

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

У Сі можна використовувати два типи коментарів: блоковий і рядковий.

Блоковий укладається між символами / * текст коментаря * / . Він може розміщуватися на декількох рядках. наприклад:

#include <stdio.h>
 
/* 
Функція main виводить 
    на консоль строку 
    Hello World 
*/

int main(void)
{
    printf("Hello world! \n");
    return 0;
}

Рядковий коментар поміщається на одному рядку після подвійного слеша // :

#include <stdio.h>        // підключаємо заголовочний файл stdio.h
 
int main(void)                  // визначаємо функцію main
{                               // початок функції
    printf("Hello world!");     // виводимо рядок на консоль
    return 0;                   // виходимо з функції
}                               // кінець функції

Наш партнер:
beta test mp3 playlist downloader