Menu
CoddyTech

Khởi tạo struct

Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 42 trên 63.

Bạn có thể tạo các biến struct rồi gán giá trị cho từng thành viên, nhưng C cung cấp một cách thuận tiện hơn để thiết lập giá trị ban đầu. Bạn có thể khởi tạo biến struct ngay khi khai báo bằng một danh sách khởi tạo đặt trong dấu ngoặc nhọn.

Cú pháp khởi tạo struct là:

struct StructureName variableName = {value1, value2, ...};

Với ví dụ về struct Point, bạn có thể khai báo và khởi tạo nó trên cùng một dòng:

struct Point p1 = {10, 20};

Lệnh này tạo một biến Point có tên p1, với x được đặt thành 10 và y được đặt thành 20. Các giá trị trong danh sách khởi tạo được gán cho các thành viên của struct theo thứ tự chúng được khai báo trong định nghĩa struct.

Cách khởi tạo này không chỉ ngắn gọn hơn so với việc gán từng giá trị riêng, mà còn đảm bảo struct bắt đầu với các giá trị có ý nghĩa thay vì dữ liệu rác ngẫu nhiên. Cách này đặc biệt hữu ích khi bạn biết các giá trị ban đầu tại thời điểm biên dịch và muốn tạo biến struct sẵn sàng sử dụng một cách hiệu quả.

challenge icon

Thử thách

Dễ

Tạo một chương trình C minh họa cách khởi tạo struct bằng danh sách khởi tạo. Chương trình cần:

  1. Định nghĩa một struct tên là Employee với các thành viên sau:
    • Một số nguyên id để lưu ID của nhân viên
    • Một mảng ký tự department có kích thước 15 để lưu tên phòng ban
    • Một số nguyên yearsOfService để lưu số năm công tác
    • Một số thực salary để lưu mức lương của nhân viên
  2. Tạo ba biến Employee bằng danh sách khởi tạo với dữ liệu sau:
    • emp1: ID 101, phòng ban "Engineering", 5 năm công tác, mức lương 75000.50
    • emp2: ID 102, phòng ban "Marketing", 3 năm công tác, mức lương 65000.25
    • emp3: ID 103, phòng ban "Sales", 8 năm công tác, mức lương 80000.75
  3. In thông tin của từng nhân viên theo đúng định dạng sau:
    • Employee 1:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 2:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 3:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
  4. Tính và in tổng mức lương của cả ba nhân viên theo định dạng: Total Salary: [total]
  5. Tính và in số năm công tác trung bình theo định dạng: Average Years of Service: [average]

Thử thách này kiểm tra mức độ hiểu của bạn về cách khởi tạo struct bằng danh sách khởi tạo, trong đó bạn khai báo và khởi tạo biến struct trên cùng một dòng. Các giá trị trong danh sách khởi tạo phải theo đúng thứ tự khai báo các thành viên trong định nghĩa struct.

Kết quả đầu ra dự kiến là:

Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33

Tự làm thử

#include <stdio.h>

// TODO: Định nghĩa struct Employee tại đây

int main() {
    // TODO: Tạo ba biến Employee bằng danh sách khởi tạo
    
    // TODO: In ra thông tin của từng nhân viên
    
    // TODO: Tính và in ra tổng lương cùng số năm làm việc trung bình
    
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online