Зміст курсу
Основи C
Основи C
Заголовок, Прототипи
Протягом цього курсу ми постійно використовували файл stdio.h
. Цей файл служить як заголовок стандартного вводу/виводу.
У ньому міститься прототип функції printf()
, яку ми використовували в кожному уроці.
Ось навмисна помилка для ілюстрації:
Main.c
//#include <stdio.h> int main() { printf("Using `printf()` without `stdio.h`"); return 0; }
Якщо ви виключите файл stdio.h
, функція printf()
перестане працювати. Виклик цієї функції без заголовка призведе до помилки.
Розуміння заголовкових файлів
Заголовкові файли, такі як stdio.h
, містять декларації змінних, масивів та прототипи функцій. Вони модульно організовують ваш код проекту, дозволяючи підключати компоненти за потреби. Такий підхід спрощує ваші проекти.
Прототипи функцій
Прототип функції - це, по суті, оголошення функції без її фактичної реалізації. Думайте про прототип як про "попередження" для компілятора, що сигналізує про існування вашої функції.
function_type function_name(arguments);
Він нагадує стандартну функцію, але без деталей. Зверніть увагу на завершальний крапку з комою (;
). Тепер, як ми обробляємо прототип функції в окремому заголовковому файлі?
Проекти з кількома файлами
До цього моменту ми писали наші змінні та функції в одному файлі, прямо поруч з функцією main
. Однак у професійній розробці це не є нормою. Давайте розробимо функцію для оцінки часу зарядки/розрядки конденсатора на основі його ємності та опору.
Наш проект буде розділений на три файли:
func.h
- тут буде зберігатися прототип функції;func.c
- реалізація нашої функції розрахунку часу зарядки/розрядки конденсатора буде тут;main.c
- цей основний файл буде місцем, де викликаються всі функції.
// it's func.h file
#include <stdio.h>
double R, C;
double chrg_dchrg(double R, double C);
// it's func.c file
#include "func.h"
double chrg_dchrg(double R, double C)
{
double theta = 5 *((R * C) / 1000);
return theta;
}
// it's main.c file
#include "func.h"
int main()
{
R = 10;
C = 150;
printf("Charge/discharge will be %.2f ms\n", chrg_dchrg(R,C));
return 0;
}
Виконання цієї програми дає:
"Charge/discharge will be 7.50 ms"
Примітка
%.2f
вказує, що результат має бути відображений з двома знаками після коми.
Дякуємо за ваш відгук!