Bỏ qua để đến nội dung

Biến (Variable)

Biến giống như một “chiếc hộp” lưu trữ dữ liệu để dùng lại sau này. Trong C++, bạn phải khai báo kiểu dữ liệu của biến khi tạo nó, vì C++ là ngôn ngữ kiểu tĩnh (statically typed).

#include <iostream>
int main() {
int year = 2025; // Khai báo biến kiểu int, gán giá trị 2025
int next_year = year + 1; // Dùng biến year khi cần
std::cout << year << std::endl;
std::string message = "Hello C++"; // Khai báo biến kiểu string
return 0;
}

Cú pháp khai báo: <kiểu dữ liệu> <tên biến> = <giá trị>;

C++ cho phép khai báo biến trước mà chưa gán giá trị:

int age; // Khai báo, chưa có giá trị (giá trị "rác" - undefined)
age = 20; // Gán giá trị sau
int score = 100; // Khai báo và gán cùng lúc (khuyến nghị)

⚠️ Lưu ý: một biến được khai báo mà chưa khởi tạo giá trị sẽ chứa một giá trị rác không xác định trong bộ nhớ - đọc giá trị đó trước khi gán là lỗi tiềm ẩn (undefined behavior). Luôn khởi tạo giá trị ngay khi khai báo.

3. Kiểu dữ liệu cố định - không thể đổi kiểu

Phần tiêu đề “3. Kiểu dữ liệu cố định - không thể đổi kiểu”

Một khi đã khai báo kiểu, biến không thể chứa giá trị của kiểu khác:

int fruit = 5;
// fruit = "apple"; // LỖI BIÊN DỊCH! Không thể gán chuỗi cho biến int
fruit = 10; // OK, vẫn là int

Kiểu dữ liệu của biến được xác định ngay từ khi khai báo và không thể thay đổi trong suốt vòng đời của biến đó.

int a = 1, b = 2, c = 3; // Khai báo nhiều biến cùng kiểu trên một dòng
std::cout << a << " " << b << " " << c << std::endl;
int x = 10, y = 10, z = 10; // Cùng giá trị (phải lặp lại giá trị cho từng biến)

C++ không có cú pháp gán đồng thời nhiều biến bằng nhiều giá trị khác nhau trên một dòng (kiểu a, b, c = 1, 2, 3) - trừ khi dùng std::tie với std::tuple (sẽ học ở bài sau).

  1. Tên phải bắt đầu bằng chữ cái hoặc dấu gạch dưới (_), không được bắt đầu bằng số.
    • Hợp lệ: name, _value
    • Không hợp lệ: 1age
  2. Chỉ chứa chữ cái, chữ số và dấu gạch dưới - không dùng ký tự đặc biệt (*, -, #…).
  3. Phân biệt chữ hoa/chữ thường: fruitFruit là hai biến khác nhau.
  4. Không được trùng với từ khóa (keyword) của C++ như int, class, if, for
  5. Không được có khoảng trắng trong tên biến.

Quy ước phổ biến: snake_case (như total_sum) hoặc camelCase (như totalSum) - tùy theo coding style của dự án.

#include <iostream>
#include <string>
int main() {
std::string message = "I love " + std::string("C++.");
std::cout << message << std::endl; // I love C++.
std::string language = "C++";
int year = 2025;
std::cout << language << " " << year << std::endl; // C++ 2025
return 0;
}

Lưu ý: nối một chuỗi ký tự C-style ("I love ") trực tiếp với một chuỗi C-style khác bằng + sẽ không biên dịch được - ít nhất một trong hai bên phải là std::string.

  • Biến trong C++ phải khai báo kiểu dữ liệu, kiểu này không thay đổi trong suốt vòng đời của biến
  • Nên luôn khởi tạo giá trị ngay khi khai báo biến, tránh giá trị rác
  • Quy tắc đặt tên: không bắt đầu bằng số, không dùng ký tự đặc biệt, không trùng từ khóa C++