C/C++ 기초

배열과 문자열

C string은 null 종료 char 배열이고 std::string은 storage와 length를 소유합니다.

배열과 문자열이란?

C string은 null 종료 char 배열이고 std::string은 storage와 length를 소유합니다.

고정 배열을 순회하고 문자열 길이를 안전하게 구합니다.

중요한 점

  • Compiler warning을 켜고 모두 해결하세요.
  • 각 값의 type과 lifetime을 파악하세요.
  • 입력과 배열 경계를 검증하세요.

C와 C++ 코드 예제

C
실행 →
main.c
#include <stdio.h>
#include <string.h>

int main(void) {
    int values[] = {3, 5, 8, 13};
    char name[] = "Ada";
    size_t count = sizeof values / sizeof values[0];
    printf("%s: %zu values, %zu letters\n", name, count, strlen(name));
    return 0;
}
예상 출력
Ada: 4 values, 3 letters
C++
실행 →
main.cpp
#include <array>
#include <iostream>
#include <string>

int main() {
    std::array values{3, 5, 8, 13};
    std::string name = "Ada";
    std::cout << name << ": " << values.size()
              << " values, " << name.size() << " letters\n";
}
예상 출력
Ada: 4 values, 3 letters

C와 C++ 비교

sizeof는 local array만 셀 수 있고 strlen은 null까지 스캔하지만 std::string::size는 O(1)입니다.

C

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

C++

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

연습 문제

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

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