Основы C/C++

Функции и передача параметров

По умолчанию параметры копируются; изменение исходного объекта требует явного доступа.

Что такое Функции и передача параметров?

По умолчанию параметры копируются; изменение исходного объекта требует явного доступа.

Сравните передачу по значению, указатели и ссылки.

Важные моменты

  • Включайте предупреждения компилятора и исправляйте их.
  • Знайте тип и lifetime каждого значения.
  • Проверяйте ввод и границы массивов.

Примеры кода на C и C++

C
Запустить →
main.c
#include <stdio.h>

void swap_ints(int *left, int *right) {
    int temporary = *left;
    *left = *right;
    *right = temporary;
}

int main(void) {
    int a = 4, b = 9;
    swap_ints(&a, &b);
    printf("%d %d\n", a, b);
    return 0;
}
Ожидаемый результат
9 4
C++
Запустить →
main.cpp
#include <iostream>

void swap_ints(int& left, int& right) {
    int temporary = left;
    left = right;
    right = temporary;
}

int main() {
    int a = 4, b = 9;
    swap_ints(a, b);
    std::cout << a << ' ' << b << '\n';
}
Ожидаемый результат
9 4

Сравнение C и C++

C передаёт адрес и разыменовывает его. Ссылка C++ задаёт alias, а const обозначает доступ только для чтения.

C

C явно показывает небольшие процедурные API и представление данных.

C++

C++ сохраняет низкоуровневую модель и добавляет безопасные типы.

Практические задания

Запустите обе версии и изменяйте их, сравнивая гарантии языков.

  • Добавьте неверные и граничные значения.
  • Компилируйте с -Wall -Wextra -Wpedantic.
  • Разделите объявления и реализацию.