Struct hay cấu trúc là một kiểu dữ liệu mà người dùng tự định nghĩa, là giải pháp khi chúng ta cần giải quyết các bài toán thực tế khi mà đối tượng cần lưu lại trong chương trình có rất nhiều thông tin.
Ví dụ khi muốn lưu thông tin của một sinh viên: tên, năm sinh, email, điểm... thì không có kiểu dữ liệu nào trong C phù hợp cả, mà bạn cần tập hợp nhiều kiểu dữ liệu có sẵn vào làm một.
Cú pháp :
struct ten_struct{
data_type1 data_field1;
data_type2 data_field2;
....
data_typen data_fieldn;
};
Ví dụ chúng ta sẽ xây dựng một cấu trúc lưu sinh viên gồm :
Họ tên - Chuỗi ký tự không quá 50
Email - Chuỗi ký tự không quá 50
Chuyên ngành - Chuỗi ký tự không quá 60
Điểm trung bình - Số thực
Ta sẽ xây dựng cấu trúc sinh viên như sau :
struct SinhVien{
char hoten[50];
char email[50];
char chuyenNganh[60];
double diemTrungBinh;
};
Sau khi xây dựng xong cấu trúc thì bạn có thể dùng nó như kiểu dữ liệu thông thường và khai báo các biến thuộc kiểu cấu trúc này.
Để truy cập vào các trường dữ liệu của cấu trúc bạn dùng toán tử '.'
Chúng ta thử với đoạn code sau tren IDE Online:
#include "stdio.h"
#include "string.h"
struct SinhVien{
char hoten[50];
char email[50];
char chuyenNganh[30];
double diemTrungBinh;
};
//Thay struct SinhVien = SinhVien
typedef struct SinhVien SinhVien;
int main(){
SinhVien s;
strcpy(s.hoten, "Tran Van An");
strcpy(s.email, "tranvanadatvietlt@dvmail.com");
strcpy(s.chuyenNganh, "Cong Nghe Thong Tin");
s.diemTrungBinh = 8.1;
printf("Thong tin sinh vien : \n");
printf("Ho ten : %s\n", s.hoten);
printf("Email : %s\n", s.email);
printf("Lop : %s\n", s.chuyenNganh);
printf("Diem Trung Binh : %.2lf\n", s.diemTrungBinh);
return 0;
}
Đây là kết quả:
Phần sau chúng ta sẽ áp dụng vào chương trình tào lao phiên bản 2.
Phần này chúng ta sẽ gải thích một số lệnh mới.
1. Trước hết là khai báo cấu trúc SinhVien
struct SinhVien{
char hoten[50];
char email[50];
char chuyenNganh[30];
double diemTrungBinh;
};
Chúng ta có thể thêm bất cứ thông tin gì, ví dụ địa chỉ, cấu trúc sẽ trở thành
struct SinhVien{
char hoten[50];
char email[50];
char diaChi[60]
char chuyenNganh[30];
double diemTrungBinh;
};
2. Tiếp theo là lệnh:
typedef struct SinhVien SinhVien;
Trong C khi khai báo bạn cần thêm từ khóa struct ở trước, nếu bạn không muốn khai báo từ khóa struct mỗi khi dùng cấu trúc thì có thể typedef để định nghĩa lại kiểu cho cấu trúc.
Lệnh trên có nghĩa là thay vì phải khai báo struct SinhVien thì chúng ta có thể khai báo y như một biến là SinhVien
3. Lệnh tiếp theo:
SinhVien s;
Ta khai báo một biến s với định dạng kiểu SinhVien
Ta hoàn toàn có thể khai báo:
struct SinhVien s;
Cả hai cách khai báo đều được vì chúng ta đã sử dụng typedef ở trên.
4. Hàm strcpy()
Hàm strcpy() copy nội dung từ chuỗi nguồn sang chuỗi đích và trả về con trỏ tới chuỗi đích sau khi copy xong.
Hàm này thuộc thư viện string.h
Cú pháp :
char* strcpy(char *dest, char *src);
Tham số :
char *dest : Chuỗi đích
char *src : Chuỗi nguồn
Trong chương trình, chúng ta sử dụng hàm strcpy() để khởi tạo giá trị cho biến s.
Không có nhận xét nào:
Đăng nhận xét