Ngôn ngữ lập trình C/Khai báo/Khai báo Cấu trúc

From Wikiversity
Jump to navigation Jump to search

Cấu trúc[edit]

Cấu trúc (từ khóa tương ứng struct) thực sự là một "kiểu mở rộng" của mảng. So với mảng thì cấu trúc mạnh hơn ở chỗ nó cho phép các phần tử của nó có các kiểu khác nhau và mỗi phần tử này được gọi là thành phần của một cấu trúc:

struct person
{
  char name[60];
  int age;
}; //lưu ý dấu ";" cần dùng để kết thúc câu lệnh

Câu lệnh struct nêu trên là một khai báo chuẩn để tạo ra một kiểu cấu trúc trong C.

Định nghĩa biến kiểu struct[edit]

Việc định nghĩa một biến có kiểu struct cũng đơn giản như khi định nghĩa các biến bình thường:

struct person Bluesman;
struct person Bio = {"Hieu", 30};

Trong cách đầu thì biến Bluesman chưa có giá trị khởi động (nó vẫn có thể được truy cập và thay đổi giá trị sau này) trong khi biến Bio đã được gán các giá trị ban đầu. Hãy lưu ý dùng dấu phẩy "," để phân biệt các giá trị được gán lên những thành phần của cấu trúc—và dĩ nhiên chúng phải có đúng kiểu cũng như không thể gán thiếu các giá trị cho các thành phần này. Để truy cập đến các giá trị của biến có kiểu struct thì có thể dùng toán tử "." như câu lệnh sau:

printf("Name: %s\n", Bio.name);

Mảng của các struct[edit]

Để kiến tạo một mảng của các struct thì dùng cú pháp sau:

struct person list[10];

Con trỏ chỉ tới struct[edit]

Cũng vậy, việc tiến hành khai báo một biến con trỏ có kiểu là struct tương tự cách thông thường. Chỉ cần thêm vào đó dấu sao đằng trước tên biến:

struct person *Huong;

Cấu trúc lồng nhau[edit]

Kiểu cấu trúc cũng có thể định nghĩa lồng vào nhau. Thí dụ dưới đây cho thấy việc khai báo cấu trúc worker có chứa cấu trúc person như là một thành phần. Việc truy cập dữ liệu thành phần của cấu trúc bên trong cũng được tiến hành theo cách dùng toán tử "." nối tiếp nhau.

struct person
{ 
  char name[60]; 
  int age;
};

struct worker
{ 
  struct person peronal_ID;
  char job[30];
  float income;
};