C/C++ Basics

Mảng và chuỗi

C string là mảng char kết thúc bằng null; std::string sở hữu storage và lưu length.

Mảng và chuỗi là gì?

C string là mảng char kết thúc bằng null; std::string sở hữu storage và lưu length.

Duyệt mảng cố định và đo độ dài text an toàn.

Điểm quan trọng

  • Luôn bật compiler warning và xử lý mọi cảnh báo.
  • Hiểu rõ type và lifetime của từng giá trị.
  • Kiểm tra input và giới hạn mảng rõ ràng.

Code ví dụ bằng C và C++

C
Chạy code →
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;
}
Output dự kiến
Ada: 4 values, 3 letters
C++
Chạy code →
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";
}
Output dự kiến
Ada: 4 values, 3 letters

So sánh C và C++

sizeof chỉ tính số phần tử của local array; strlen phải quét đến null còn std::string::size là O(1).

C

C dùng API thủ tục nhỏ gọn và thể hiện chi tiết biểu diễn rõ ràng.

C++

C++ giữ mô hình low-level nhưng bổ sung type thư viện và abstraction an toàn hơn.

Bài tập mở rộng

Chạy cả hai phiên bản rồi thay đổi để quan sát khác biệt về bảo đảm của từng ngôn ngữ.

  • Thêm input sai và boundary value.
  • Biên dịch với -Wall -Wextra -Wpedantic.
  • Tách declaration dùng lại vào header và implementation file.