Môi trường thực thi
Codes dùng để ví dụ cho bài viết này được viết và thực thi tốt trong môi trường Visual Studio 2013 Ultimate.
Từ khóa typedef
Vấn đề
Trong một vài trường hợp cần tạo thêm tên cho một kiểu dữ liệu. Vì một vài lý do như kiểu dữ liệu có tên quá dài và cần tạo thêm một cái tên ngắn gọn hơn, hoặc tên của kiểu dữ liệu hiện tại tối nghĩa so với ý nghĩa mong muốn.
Chức năng
Từ khóa typedef giúp tạo thêm một tên (định danh) cho kiểu dữ liệu. Ngoài ra, từ khóa typedef còn dùng để định nghĩa tên cho một hàm. Tuy nhiên, trong phạm vi bài viết này chỉ tập trung vào việc sử dụng typedef cho kiểu dữ liệu.
Cú pháp khai báo
typedef <tên kiểu> <tên mới>;
Các ví dụ
typedef short smallNumber; int main() { smallNumber var_s = 10; var_s = var_s + 10; var_s++; return 0; }
typedef
là từ khóa.short
là tên của kiểu dữ liệu.smallNumber
là tên mới muốn đặt cho kiểu dữ liệu.
Sau đó có thể thao tác với biến kiểu smallNumber
như là kiểu short
thông thường.
typedef int point2D[2]; int main() { point2D position; position[0] = 0; position[1] = 1; return 0; }
Thay vì sử dụng mảng tĩnh 2 phân tử để khai báo một điểm như sau: int position[2]
, thì có thể sử dụng typedef
để làm cho tên kiểu dữ liệu dễ hiểu hơn: point2D position
.
Phạm vi khai báo
- Khai báo
typedef
ở trong hàm thì phạm vi sử dụng ở trong hàm đó. - Khai báo
typedef
ở ngoài hàm (trong file.cpp
) thì phạm vi sử dụng trong file cpp đó. - Có thể tìm hiểu việc khai báo trong file header. Trong phạm vi bài viết không đi sâu về vấn đề này.
Kiểu enum
Vấn đề
Trong lập trình, đôi khi những kiểu dữ liệu không mang lại ý nghĩa phù hợp với mục đích người lập trình, hoặc tệ hơn có thể làm trở ngại quá trình lập trình. Lấy ví dụ khi lưu trữ các ngày trong tuần bằng một biến integer. Buộc phải nhớ chính xác bảy giá trị tương tứng với 7 ngày trong tuần. Điều này gây khó khăn cho việc ghi nhớ và phát triển lâu dài. Cần một kiểu dữ liệu mới mang lại ý nghĩa rõ ràng hơn.
Chức năng
Làm cho mã nguồn trở nên sáng sủa và dễ hiểu.
Cú pháp khai báo
enum <tên enum> { <tên hằng 1>, <tên hằng 2>, ... }
- Sau từ khóa
enum
là tên kiểu liệt kê. - Bên trong là các hằng số, mỗi một hằng số được cách nhau bằng dấu '
,
'. Riêng hằng số cuối cùng không có dấu ',
'. - Tên hằng không được có khoảng trắng.
- Kết thúc enum phải có dấu '
;
'. - Có thể tạo giá trị cho hằng số. Nếu hằng số đầu tiên không được gán giá trị, thì giá trị mặc định là
0
.
Các ví dụ
Cách khai báo một enum
enum eDayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };
Sử dụng enum
để in ra thứ ngày trong tuần
#include <iostream> using namespace std; enum eDayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }; void PrintScreen(eDayOfWeek day) { switch (day) { case eDayOfWeek::MONDAY : cout << "Now day is a Monday" << endl; break; case eDayOfWeek::TUESDAY: cout << "Now day is a Tuesday" << endl; break; case eDayOfWeek::WEDNESDAY: cout << "Now day is a Wednesday"<< endl; break; case eDayOfWeek::THURSDAY: cout << "Now day is a Thursday" << endl; break; case eDayOfWeek::FRIDAY: cout << "Now day is a Friday" << endl; break; case eDayOfWeek::SATURDAY: cout << "Now day is a Saturday" << endl; break; case eDayOfWeek::SUNDAY: cout << "Now day is a Sunday" << endl; break; default: break; } } int main() { eDayOfWeek nowDay = eDayOfWeek::MONDAY; PrintScreen(nowDay); return 0; }
Thay vì sử dụng biến integer để lưu trữ giá trị, việc sử dụng một enum
giúp dễ dàng hiểu ý nghĩa của đoạn mã hơn. Thuận lợi cho quá trình phát triển.
Phạm vi khai báo
- Khai báo kiểu liệt kê bên trong hàm thì có thể sử dụng kiểu liệt kê đó bên trong hàm.
- Khai báo kiểu liệt kê bên trong một file cpp và ngoài hàm, thì kiểu liệt kê đó có thể được sử dụng trong toàn file cpp.
- Có thể tìm hiểu việc khai báo trong file header. Trong phạm vi bài viết xin không đi sâu về vấn đề này.