Keyword & Identifier trong ngôn ngữ C

Keyword và Identifier là 2 từ khóa rất phổ biến mà chúng ta thường gặp trong các tài liệu ngôn ngữ lập trình C. Bài viết này giúp các bạn hiểu rõ ý nghĩa của Keyword và Identifier.
Đầu tiên, chúng ta tìm hiểu Character set (tập ký tự) là gì.

1. Character set

Character set là tập hợp các ký tự Alphabets, Digits (ký tự số) và Special Characters (các ký tự đặc biệt không thuộc 2 tập ký tự còn lại).

  • Alphabets: bao gồm các ký tự Uppercase (in hoa) và Lowercase (in thường)
    Uppercase: A B C … X Y Z
    Lowercase: a b c … x y z
  • Digits: ký tự số
    0 1 2 3 4 5 6 7 8 9
  • Special Characters: ký tự đặc biệt
  • Ngoài ra, chúng ta còn rất thường gặp và làm việc với White space Characters (các ký tự khoảng trắng): là các ký tự được sử dụng trong văn bản để phân tách các từ và câu như Blank space, newline, horizontal tab, carriage return and form feed… Đọc thêm tại đây.

Khi làm việc với các ký tự trong ngôn ngữ lập trình, mỗi ký tự sẽ tương đương với một giá trị số nguyên. Tham khảo tại Bảng mã ASCII.

Chúng ta cùng tiếp tục tìm hiểu về 2 từ khóa Keywork và Identifier.

2. Keywords
Keywords là các từ được định nghĩa trước, dành riêng cho việc sử dụng trong lập trình và có ý nghĩa đặc biệt đối với compiler (trình biên dịch). Keywords là một phần của syntax (cú pháp) và chúng không thể được sử dụng như một identifier (mã định danh).
Ví dụ: int tapit = 10;
int là một keyword được sử dụng nhằm chỉ ra rằng biến tapit có kiểu dữ liệu int (integer – kiểu nguyên có kích thước 2-4 byte bộ nhớ).
Vì C là ngôn ngữ phân biệt chữ hoa, chữ thường, nên các bạn lưu ý rằng tất cả các keyword đều được viết bằng chữ thường. Dưới đây là danh sách tất cả các từ khóa được phép sử dụng trong các tiêu chuẩn của ngôn ngữ C. 

alignas (C23) extern sizeof _Alignas (C11)
alignof (C23) false (C23) static _Alignof (C11)
auto float static_assert (C23) _Atomic (C11)
bool (C23) for struct _BitInt (C23)
break goto switch _Bool (C99)
case if thread_local (C23) _Complex (C99)
char inline (C99) true (C23) _Decimal128 (C23)
const int typedef _Decimal32 (C23)
constexpr (C23) long typeof (C23) _Decimal64 (C23)
continue nullptr (C23) typeof_unqual (C23) _Generic (C11)
default register union _Imaginary (C99)
do restrict (C99) unsigned _Noreturn (C11)
double return void _Static_assert (C11)
else short volatile _Thread_local (C11)
enum signed while

Lưu ý:

  • Thứ tự phát triển của các tiêu chuẩn: C89/90 ⇨ C99 ⇨ C11 ⇨ C17 ⇨ C23
  • (C11): được áp dụng từ C11 trở đi
  • Tìm hiểu chi tiết tại đây.

3. Identifiers
Identifiers đề cập đến những cái tên được đặt cho các thực thể như variable (biến), function (hàm), struct (cấu trúc), v.v.
Identifiers phải là duy nhất. Chúng được tạo ra để đặt tên duy nhất cho một thực thể nhằm xác định nó trong quá trình thực thi chương trình.
Ví dụ:
int tapit = 10;
int AIoTLearning;
tapit AIoTLearning là các Identifiers. Lưu ý rằng, Identifiers phải khác với các keywords đã được đề cập trên. Không thể sử dụng các cái tên trùng với các keywords như int, case hay void để đặt tên cho Identifiers.

4. Quy luật đặt tên cho Identifier
+ Identifier hợp lệ có thể có các ký tự alphabets (cả chữ hoa và chữ thường), digits và underscores (dấu gạch dưới).
+ Ký tự đầu tiên của Identifier phải là ký tự alphabet hoặc dấu gạch dưới.
+ Không thể sử dụng các keywords như int, while, v.v. để đặt cho identifiers.
+ Không có quy tắc nào về độ dài ký tự của một identifier trong ngôn ngữ C. Tuy nhiên, có thể gặp sự cố trong một số trình biên dịch nếu identifier có độ dài hơn 31 ký tự.

Trong nội dung chia sẻ bài viết này, mình hy vọng có thể giúp các bạn hiểu rõ và phân biệt được Keyword và Identifier, tránh được một số nhầm lẫn khi đọc tài liệu hoặc sử dụng chúng.

Chúc các bạn thành công!

N.T.Nhien

Tìm hiểu thêm:
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – AIoT Learning