Từ khóa typedef trong C

Ngôn ngữ chương trình C cung cấp một từ khóa typedef, mà bạn có thể sử dụng để cung cấp kiểu cho một tên mới. Dưới đây là một ví dụ để định nghĩa một mục BYTE cho các số 1 byte (như unsigned char).

typedef unsigned char BYTE;

Sau khi định nghĩa kiểu này, định danh BYTE có thể được sử dụng như là tên viết tắt cho các kiểu unsigned char, ví dụ:

BYTE  b1, b2;

Theo quy ước, các chữ cái viết hoa được sử dụng cho những định nghĩa này để cho người sử dụng dễ ghi nhớ, nhưng bạn có thể sử dụng kiểu chữ thường như sau:

typedef unsigned char byte;

Bạn cũng có thể sử dụng typedef để cung cấp một tên cho người sử dụng kiểu dữ liệu đã được định nghĩa. Ví dụ, bạn có thể sử dụng typedef với cấu trúc để định nghĩa một kiểu dữ liệu mới và sau đó sử dụng kiểu dữ liệu đó để định nghĩa các biến cấu trúc một cách trực tiếp như sau:

#include <stdio.h>
#include <string.h>
 
typedef struct Books
{
   char  tieude[50];
   char  tacgia[50];
   char  chude[100];
   int   id;
} Book;
 
int main( )
{
   Book book;
 
   strcpy( book.tieude, "Lap trinh C");
   strcpy( book.tacgia, "Pham Van At"); 
   strcpy( book.chude, "Ngon ngu lap trinh C");
   book.id = 1234567;
 
   printf( "Tieu de: %s\n", book.tieude);
   printf( "Tac gia: %s\n", book.tacgia);
   printf( "Chu de: %s\n", book.chude);
   printf( "ID: %d\n", book.id);
   
   printf("\n===========================\n");
   printf("QTM chuc cac ban hoc tot! \n");

   return 0;
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

typedef vs #define trong C

#define là một directive trong C mà cũng được sử dụng để định nghĩa tên hiệu (viết tắt) cho các kiểu dữ liệu đa dạng tương tự như typedef nhưng có những điểm khác nhau sau:

typedef được giới hạn chỉ cung cấp các tên viết tắt cho các kiểu, trong khi đó #define có thể được sử dụng để định nghĩa tên hiệu cho cả các giá trị, như bạn có thể định nghĩa 1 là ONE,…

Sự phiên dịch typedef được thực hiện bởi bộ biên dịch, trong khi lệnh #define được xử lý bởi bộ tiền xử lý.

Sau đây là cách sử dụng đơn giản nhất của #define:

#include <stdio.h>
 
#define TRUE  1
#define FALSE 0
 
int main( )
{
   printf( "Gia tri TRUE tuong duong: %d\n", TRUE);
   printf( "Gia tri FALSE tuong duong: %d\n", FALSE);
   
   printf("\n===========================\n");
   printf("QTM chuc cac ban hoc tot! \n");

   return 0;
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả: