Tạo biến 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 40 trên 63.
Sau khi khai báo kiểu struct, bạn có thể dùng kiểu đó để tạo các biến thực sự chứa dữ liệu. Tạo một biến struct cũng giống hệt như khai báo bất kỳ biến nào khác trong C: bạn ghi kiểu dữ liệu rồi đến tên biến.
Cú pháp tạo biến struct là:
struct StructureName variableName;Ví dụ, sử dụng struct Point từ bài học trước:
struct Point p1;
struct Point p2;Lệnh này tạo hai biến, p1 và p2, cả hai đều có kiểu struct Point. Mỗi biến có bản sao riêng của các thành viên x và y được định nghĩa trong struct.
Bạn có thể tạo bao nhiêu biến struct tùy ý, giống như với các kiểu dữ liệu có sẵn như int hoặc float. Mỗi biến struct độc lập và có thể lưu các giá trị khác nhau trong các thành viên của nó. Sau khi được tạo, các biến này sẵn sàng lưu trữ dữ liệu tọa độ một cách có tổ chức.
Thử thách
DễTạo một chương trình C minh họa cách tạo nhiều biến struct thuộc các kiểu khác nhau. Chương trình cần:
- Định nghĩa một
structcó tênRectanglevới các thành viên sau:- Một số nguyên
width - Một số nguyên
height
- Một số nguyên
- Định nghĩa một
structcó tênStudentvới các thành viên sau:- Một số nguyên
id - Một mảng ký tự
namecó kích thước 30 - Một số thực
gpa
- Một số nguyên
- Trong hàm main, tạo các biến struct sau:
- Hai biến
Rectanglecó tênrect1vàrect2 - Ba biến
Studentcó tênstudent1,student2vàstudent3
- Hai biến
- In thông báo xác nhận cho từng biến được tạo theo đúng định dạng sau:
Rectangle variable rect1 createdRectangle variable rect2 createdStudent variable student1 createdStudent variable student2 createdStudent variable student3 created
- In tổng số biến struct đã tạo theo định dạng:
Total struct variables created: 5 - In dung lượng bộ nhớ cho mỗi kiểu theo định dạng:
Memory per Rectangle: [size] bytesMemory per Student: [size] bytes
Thử thách này kiểm tra khả năng định nghĩa nhiều kiểu struct và tạo một số biến thuộc mỗi kiểu của bạn. Mỗi biến struct độc lập và có vùng bộ nhớ riêng, qua đó minh họa cách sử dụng struct để tổ chức nhiều kiểu dữ liệu khác nhau trong chương trình.
Tự làm thử
#include <stdio.h>
int main() {
// TODO: Định nghĩa struct Rectangle tại đây
// TODO: Định nghĩa struct Student tại đây
// TODO: Tạo các biến struct tại đây
// TODO: In ra thông báo xác nhận cho từng biến đã tạo
// TODO: In ra tổng số biến struct đã tạo
// TODO: Dùng sizeof() để in ra dung lượng bộ nhớ của từng kiểu struct
return 0;
}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
1Nền tảng về con trỏ
Con trỏ là gì?Khai báo con trỏToán tử lấy địa chỉ (&)Toán tử giải tham chiếu (*)Con trỏ NULLÔn tập: kiến thức cơ bản về con trỏ4Dự án: Công cụ xử lý văn bản đơn giản
Tổng quan dự ánĐếm ký tự7Cấu trúc (struct)
Struct là gì?Khai báo structTạo biến structTruy cập thành viên của structKhởi tạo structÔn tập: struct dữ liệu học sinh2Con trỏ và mảng
Tên mảng dưới dạng con trỏPhần tử mảng và con trỏPhép toán con trỏSo sánh con trỏÔn tập: duyệt mảng bằng con trỏ5Con trỏ và hàm
Truyền theo giá trịTruyền con trỏ vào hàmSửa đổi biến qua con trỏVí dụ kinh điển: hoán đổiTruyền mảng vào hàmÔn tập: đối số con trỏ hàm3Mảng ký tự và chuỗi
Chuỗi dưới dạng mảng charKý tự kết thúc nullNhập chuỗi bằng scanfDùng strlen()Dùng strcpy()Dùng strcat()Dùng strcmp()Ôn tập: các hàm xử lý chuỗi cơ bản6Quản lý bộ nhớ
Bộ nhớ ngăn xếp và bộ nhớ heapCấp phát động với malloc()Dùng sizeof() để cấp phátKiểm tra lỗi cấp phátGiải phóng bộ nhớ với free()Cấp phát với calloc()Ôn tập: Mảng động9Dự án: Nhập thông tin liên hệ đơn giản
Định nghĩa struct ContactHàm tạo liên hệTự luyện tập: Trình biên dịch C online