"static const"
"static const" là kết hợp của static (storage specifier) và const (type qualifier).
static xác định vòng đời và khả năng truy cập/biến của biến. Biến static tồn tại trong bộ nhớ suốt thời gian chạy chương trình, trong khi biến auto/normal bị hủy khi hàm (nơi định nghĩa biến) kết thúc.
const là type qualifier. Khi biến khởi tạo bằng const, nó không chấp nhận thay đổi giá trị.
Kết hợp static và const: biến static const giữ giá trị suốt quá trình thực thi chương trình và không chấp nhận thay đổi giá trị.
Ví dụ
#include <iostream>
using namespace std;
int main() {
int input = 10;
static const int value = 5;
input += value;
cout << input;
return 0;
} "#define"
Các lệnh tiền xử lý gọi là DIRECTIVES, bắt đầu bằng dấu #. Không khoảng trắng trước #, và KHÔNG cần dấu chấm phẩy ở cuối.
Nhiều việc có thể làm ở giai đoạn tiền xử lý:
- Bao gồm file khác qua #include
- Định nghĩa hằng số và macro qua #define
Một số directive cho phép biên dịch/dùng điều kiện.
Lưu ý – Giai đoạn tiền xử lý xảy ra TRƯỚC khi biên dịch. C++ preprocessor chạy trước khi mã nguồn được biên dịch.
#define cho phép định nghĩa tên tượng trưng và hằng số. Ví dụ:
#define PI 3.14159
Lệnh này thay thế mọi PI trong chương trình thành 3.14159.
Ví dụ C++ #define
#include <iostream>
using namespace std;
#define PI 3.14159
int main() {
int r = 10;
float cir;
cir = PI * (r * r);
cout << "Diện tích hình tròn: " << cir << endl;
} "enum"
enum là kiểu dữ liệu do người dùng định nghĩa, chỉ định tập giá trị cho biến, biến chỉ nhận một trong tập giá trị nhỏ. Dùng từ khóa enum để định nghĩa Enumeration.
enum direction {East, West, North, South} dir; Tên enumeration là direction, chỉ nhận 1 trong 4 giá trị, dir là biến enum.
Ví dụ đơn giản: gán West cho dir, hiển thị dir cho 1. Mặc định giá trị tăng từ 0: East=0, West=1, North=2, South=3.
Ví dụ
#include <iostream>
using namespace std;
enum direction {East, West, North, South} dir;
int main() {
dir = West;
cout << dir;
return 0;
} Cách khai báo biến enum khác
Khai báo biến enum riêng sau khi định nghĩa enum:
Ví dụ
#include <iostream>
using namespace std;
enum direction {East, West, North, South};
int main() {
direction dir;
dir = South;
cout << dir;
return 0;
} Kết quả
3
Tại sao dùng enum trong C++
Dùng enum khi biến chỉ nhận một trong tập giá trị có hạn. Ví dụ biến dir lưu hướng (4 hướng). Gán giá trị khác sẽ lỗi compile. Tăng kiểm tra compile-time, tránh lỗi truyền hằng số không hợp lệ.
Ứng dụng phổ biến: câu lệnh switch-case, các giá trị case block mong đợi định nghĩa trong enum. Đảm bảo biến enum truyền vào switch không nhận giá trị ngẫu nhiên.