C/C++ 기초

함수와 매개변수 전달

매개변수는 기본적으로 copy되며 원본 변경에는 명시적인 접근이 필요합니다.

함수와 매개변수 전달이란?

매개변수는 기본적으로 copy되며 원본 변경에는 명시적인 접근이 필요합니다.

값 전달, pointer와 reference를 비교합니다.

중요한 점

  • Compiler warning을 켜고 모두 해결하세요.
  • 각 값의 type과 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는 address를 넘겨 dereference합니다. C++ reference는 alias 문법을 제공하고 const는 읽기 전용을 나타냅니다.

C

C는 작은 절차형 API와 표현 세부 사항을 드러냅니다.

C++

C++는 저수준 모델을 유지하며 더 안전한 타입을 추가합니다.

연습 문제

두 버전을 실행하고 수정하여 각 언어의 보장을 관찰하세요.

  • 잘못된 입력과 경계값을 추가하세요.
  • -Wall -Wextra -Wpedantic으로 컴파일하세요.
  • 선언과 구현을 분리하세요.