Trong bài bác giải đáp này, bạn sẽ cùng Lập trình ko cực nhọc mày mò về giao diện struct trong C (dạng hình cấu trúc). Bạn đã học giải pháp khái niệm và áp dụng kiểu cấu tạo với việc đi kèm theo của các ví dụ. Nếu dịch từ giờ đồng hồ anh ra thì nghĩa của nó là hình dáng cấu tạo, tuy nhiên họ vẫn thường xuất xắc Hotline nó là giao diện struct. Nhưng mục tiêu ở đầu cuối của họ là gọi cùng biết cách sử dụng struct trong C, thuộc bước đầu nào…
Cách khái niệm struct vào C
Trước Khi chúng ta cũng có thể knhị báo trở thành với struct, bạn cần khái niệm nó – Đó cũng là nguyên do tại vì sao struct được Call là dạng hình dữ liệu người dùng quan niệm.
Bạn đang xem: Struct là gì
khi như thế nào bọn họ cần được từ bỏ định nghĩa 1 kiểu dáng cấu trúc? khi bạn phải lưu trữ một đối tượng người dùng có nhiều nằm trong tính. lấy ví dụ như, đối tượng người tiêu dùng SinhVien tất cả những thuộc tính (Mã sinh viên, chúng ta, tên, giới tính, quê quán,…) hay đối tượng người dùng LopHoc bao gồm các trực thuộc tính (Mã lớp, thương hiệu lớp, gia sư công ty nhiệm, sĩ số,…). Lúc kia chúng ta đề nghị dùng struct để quản lý chương trình.
Cú pháp có mang struct trong C0
1
2
3
4
5
6
7
struct structureName
dataType member1;
dataType member2;
...
;
Dưới đây là 1 ví dụ:
0
1
2
3
4
5
6
7
8
struct SinhVien
int maSV;
char ho<20>;
char ten<20>;
bool gioiTinh;
char queQuan<100>;
;
vì vậy, hình trạng dữ liệu SinhVien đã có được khái niệm. Từ trên đây bạn có thể knhì báo các phát triển thành cùng với kiểu dữ liệu này.
Cách khai báo đổi mới phong cách struct vào C
Việc knhì báo đổi thay với struct tương tự như phương pháp knhị báo thay đổi thông thường, trong số ấy dạng hình tài liệu là thứ hạng struct vào C mà lại bạn vừa tư tưởng. Xem ví dụ bên dưới đây:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct SinhVien
int maSV;
char ho<20>;
char ten<20>;
bool gioiTinh;
char queQuan<100>;
;
int main()
// Khai báo 2 vươn lên là sv1 với sv2 gồm kiểu SinhVien
SinhVien sv1, sv2;
// Ta cần thêm từ khóa struct nghỉ ngơi đầu,
// nhằm tách biệt được vươn lên là này là thay đổi của mẫu mã tài liệu trường đoản cú định nghĩa
struct SinhVien sv3, sv4;
// Knhị báo mảng
struct SinhVien sv<100>;
Truy xuất những trực thuộc tính của struct
Chúng ta tất cả 2 toán thù tử dùng để làm tróc nã xuất tới các biến thành viên của kiểu struct vào C.
Sử dụng . => Toán thù tử tróc nã xuất cho tới member Khi khai báo biến đổi bình thương thơm.Sử dụng -> => Tân oán tử tầm nã xuất tới member Khi đổi thay là con trỏ.Giả sử vào ví dụ bên trên, bạn muốn tầm nã xuất gioiTinh của đối tượng người tiêu dùng sinh viên, các bạn có tác dụng nhỏng sau:
0
1
2
3
4
SinhVien sv;
// to do
printf("Gioi tinh: %s", sv.gioiTinh);
Từ khóa typedef
quý khách hàng rất có thể thực hiện từ khóa typedef để tạo nên một thương hiệu thay thế đến hình dáng dữ liệu đang bao gồm. Nó hay được thực hiện hình dạng struct nhằm đơn giản và dễ dàng hóa cú pháp khai báo biến. Nhưng nó cũng có thể sử dụng với các giao diện dữ liệu ngulặng tdiệt nhé.
0
1
2
3
4
5
6
7
8
9
struct Distance
int feet;
float inch;
;
int main()
structure Distance d1, d2;
Code trên tương đương với:
0
1
2
3
4
5
6
7
8
9
typedef struct SinhVien
int feet;
float inch;
distances;
int main()
distances d1, d2;
Hoặc:
0
1
2
3
4
5
6
7
struct PhanSo
int tu;
int mau;
;
typedef struct PhanSo PS;
Hoặc chúng ta có thể cần sử dụng cùng với hình dạng ngulặng thủhệt như sau:
0
1
2
3
4
5
typedef int U_INT8;
// Knhì báo trở thành hình trạng int
U_INT8 value;
Tuy nhiên, nếu như không có nhu cầu thực tiễn thì ta cũng tránh việc bày vẽ làm những gì. Trong một số trong những code đặc điểm ta ý muốn bao gồm quy chuẩn riêng rẽ thì nên cần dùng.
Cấu trúc struct lồng nhau
Giả sử bạn có nhu cầu kiến tạo đẳng cấp tài liệu để tàng trữ đối tượng người sử dụng Tam giác, lúc ấy bạn cũng có thể thiết kế struct trình bày tọa độ của 1 điểm, khi ấy đối tượng người tiêu dùng tam giác vẫn là 3 đối tượng người tiêu dùng điểm. Cụ thể:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct Point
int x; // hoành độ
int y; // tung độ
;
struct Triangle
Point a; // đỉnh thiết bị 1
Point b; // đỉnh máy 2
Point c; // đỉnh lắp thêm 3
int main()
Triangle tg;
// tróc nã xuất hoành độ của điểm sản phẩm nhất
tg.a.x = 5;
Sau đây là các ví dụ sử dụng thứ hạng cấu tạo struct vào C vào những bài xích tập thực tiễn. Các các bạn xem thêm và chạy demo cũng như demo sửa đổi những code mẫu mã này nhằm đọc hơn về struct nhé.
Cmùi hương trình cộng trừ nhân chia phân số trong C
Code này bản thân mang sử chúng ta nhập mẫu số mang lại phân số khác 0 nhé. Quý khách hàng hoàn toàn có thể kiểm soát bổ sung cập nhật thêm những tùy chọn/ chức năng nhằm code buổi tối ưu hơn.
Xem thêm: Despacito Có Nghĩa Là Gì ?Dịch Ra Tiếng Việt Ý Nghĩa Của Nó Điểm Hấp Dẫn, Sức Hút Của Despacito
Phần thuật tân oán tìm kiếm ước chung lớn số 1, bạn cũng có thể xem tại bài xích tìm ước thông thường lớn số 1.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include
#include
#include
int UCLN(int a, int b)
a = abs(a);
b = abs(b);
while (a * b != 0)
if (a > b)
a %= b;
else
b %= a;
return a + b;
int BSCNN(int a, int b)
return a * b / UCLN(a, b);
typedef struct PhanSo
int tuso, mauso;
PS;
PS rutGon(PS a)
PS c;
c.tuso = a.tuso / UCLN(a.tuso, a.mauso);
c.mauso = a.mauso / UCLN(a.tuso, a.mauso);
return c;
PS cong(PS a, PS b)
PS c;
c.tuso = a.tuso * b.mauso + a.mauso * b.tuso;
c.mauso = a.mauso * b.mauso;
c = rutGon(c);
return c;
PS tru(PS a, PS b)
PS c;
c.tuso = a.tuso * b.mauso - a.mauso * b.tuso;
c.mauso = a.mauso * b.mauso;
c = rutGon(c);
return c;
PS nhan(PS a, PS b)
PS c;
c.tuso = a.tuso * b.tuso;
c.mauso = a.mauso * b.mauso;
c = rutGon(c);
return c;
PS chia(PS a, PS b)
PS c;
c.tuso = a.tuso * b.mauso;
c.mauso = a.mauso * b.tuso;
c = rutGon(c);
return c;
void print(PS a)
printf("%d/%d", a.tuso, a.mauso);
int main()
PS a, b, c;
printf(" Nhap phan so a : ");
scanf("%d%d", &a.tuso, &a.mauso);
printf(" Nhap phan so b : ");
scanf("%d%d", &b.tuso, &b.mauso);
printf(" Toi gian a ta duoc : ");
a = rutGon(a);
print(a);
printf(" Toi gian b ta duoc : ");
b = rutGon(b);
print(b);
printf(" Tong cua nhì phan so = ");
c = cong(a, b);
print(c);
printf(" Hieu cua nhị phan so = ");
c = tru(a, b);
print(c);
printf(" Tich cua nhị phan so = ");
c = nhan(a, b);
print(c);
printf(" Thuong cua nhì phan so = ");
c = chia(a, b);
print(c);
Kết trái chạy:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Nhap phan so a : 3
4
Nhap phan so b : 2
3
Toi gian a ta duoc : 3/4
Toi gian b ta duoc : 2/3
Tong cua nhị phan so = 17/12
Hieu cua nhì phan so = 1/12
Tich cua hai phan so = 1/2
Thuong cua nhì phan so = 9/8
Struct với con trỏ
Tương từ bỏ nhỏng knhì báo con trỏ cùng với các loại tài liệu bao gồm sẵn trong C. Chúng ta cũng rất có thể knhì báo đổi thay nhỏ trỏ, cấp phép hễ cho biến chuyển con trỏ hình dạng struct.
Sau đó là biện pháp bọn họ knhì báo thay đổi nhỏ trỏ hình dạng struct trong C:
0
1
2
3
4
5
6
7
8
9
10
11
struct name
member1;
member2;
.
.
;
int main()
struct name *ptr, Harry;
Khi kia ptr là nhỏ trỏ kiểu name, còn Harry là thay đổi giao diện name.
Để truy cập vào các biến thành viên áp dụng đổi mới bé trỏ của struct trong C, bạn sử dụng ->, ví dụ:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include
struct person
int age;
float weight;
;
int main()
struct person *personPtr, person1;
personPtr = &person1;
printf("Enter age: ");
scanf("%d", &personPtr->age);
printf("Enter weight: ");
scanf("%f", &personPtr->weight);
printf("Displaying: ");
printf("Age: %d ", personPtr->age);
printf("weight: %f", personPtr->weight);
return 0;
Trong ví dụ này, xúc tiến của biến hóa person1 được gìn giữ vì bé trỏ personPtr. Và bạn có thể thao tác cùng với biến con trỏ giống hệt như bọn họ đang học tập sinh hoạt bài Con trỏ trong C.
Ta có:
personPtr->age mang lại hiệu quả như là cùng với (*personPtr).agepersonPtr->weight đến công dụng như thể với (*personPtr).weightCấp phát bộ nhớ động
Trước khi chúng ta hiểu phần này, bản thân hi vọng những bạn đã sở hữu kiến thức về cấp phát cồn trong C.
Thông thường, số lượng phát triển thành struct trong C nhưng mà bọn họ cần có thể béo. lúc kia rất có thể bạn sẽ buộc phải tới cấp phát cồn trong quá trình công tác thực thi. Dưới đó là cách để cấp phép bộ nhớ cồn cùng với kiểu cấu trúc:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include
#include
struct person
int age;
float weight;
char name<30>;
;
int main()
struct person *ptr;
int i, n;
printf("Enter the number of persons: ");
scanf("%d", &n);
// allocating memory for n numbers of struct person
ptr = (struct person*) malloc(n * sizeof(struct person));
for(i = 0; i n; ++i)
printf("Enter first name and age respectively: ");
// To access members of 1st struct person,
// ptr->name & ptr->age is used
// To access members of 2nd struct person,
// (ptr+1)->name & (ptr+1)->age is used
scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
printf("Displaying Information: ");
for(i = 0; i n; ++i)
printf("Name: %s Age: %d ", (ptr+i)->name, (ptr+i)->age);
return 0;
Kết quả Lúc chạy cmùi hương trình:
0
1
2
3
4
5
6
7
Enter the number of persons:2
Enter first name & age respectively:Harry 24
Enter first name và age respectively:Gary 32
Displaying Information:
Name: Harry Age: 24
Name: GaryAge: 32
Trong ví dụ bên trên, sau thời điểm người tiêu dùng nhập con số n thì ta new tiến hành cấp phép đúng n ô lưu giữ áp dụng dòng lệnh này:
0
1
2
ptr = (struct person*) malloc(n * sizeof(struct person));
Và tiếp nối, ta sử dụng bé trỏ ptr nhằm truy cập vào những thành viên của person.
Hoặc bài bác tập cấp phát động đến hình dạng cấu trúc sinc viên tiếp sau đây, ta thực hiện nhập, xuất và thu xếp list sinc viên theo điểm sử dụng cấp phát cồn đến con trỏ trong C++ (new và delete):
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include
#include
#include
#include
using namespace std;
struct NGAYTHANG
int ngay;
int thang;
int nam;
;
struct SV
char masv<12>;
char hodem<30>;
char ten<10>;
NGAYTHANG ngsinh;
char gioitinh<4>;
char hokhau<20>;
float diem;
;
void Nhapsv(SV * sv)
cout " Ma sv: ";
cin >> sv->masv;
cout " Ho dem: ";
cin.ignore();
fgets(sv->hodem, sizeof(sv->hodem), stdin);
sv->hodem
cout " Ten: ";
cin.ignore();
fgets(sv->ten, sizeof(sv->ten), stdin);
cout " Ngay sinh: ";
cin >> sv->ngsinch.ngay;
cout " Thang sinh: ";
cin >> sv->ngsinch.thang;
cout " Nam sinh: ";
cin >> sv->ngsinc.nam;
cout " Gioi tinh: ";
cin.ignore();
fgets(sv->gioitinh, sizeof(sv->gioitinh), stdin);
sv->gioitinh
cout " Ho khau: ";
cin.ignore();
fgets(sv->hokhau, sizeof(sv->hokhau), stdin);
sv->hokhau
cout " Diem: ";
cin >> sv->diem;
void Hienthisv(SV * sv)
cout sv->masv;
cout " " sv->hodem;
cout " " sv->ten;
cout " " sv->ngsinc.ngay;
cout "-" sv->ngsinch.thang;
cout "-" sv->ngsinh.nam;
cout " " sv->gioitinh;
cout " " sv->hokhau;
cout " " sv->diem;
void Nhapds(SV *p, int n)
for (int i = 0; i n; i++)
cout "Nhap thong tin cua sv thu " i + 1 " :" endl;
Nhapsv(p + i);
void Hienthids(SV *p, int n)
for (int i = 0; i n; i++)
Hienthisv(p + i);
cout " ";
void Sapxep(SV *p, int n)
for (int i = 0; i n; i++)
for (int j = i + 1; j n; j++)
if ((p + i)->diem > (p + j)->diem)
SV tmp = * (p + j);
*(p + j) = * (p + i);
*(p + i) = tmp;
int main()
Kết trái chạy:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Nhap vao so sv: 3
Nhap vao thong tin 3 sv:
Nhap thong tin cua sv thu 1 :
Ma sv: 5
Ho dem: 5
Ten: 5
Ngay sinh: 5
Thang sinh: 5
Nam sinh: 5
Gioi tinh: 5
Ho khau: 5
Diem: 5
Nhap thong tin cua sv thu 2 :
Ma sv: 3
Ho dem: 3
Ten: 3
Ngay sinh: 3
Thang sinh: 3
Nam sinh: 3
Gioi tinh: 3
Ho khau: 3
Diem: 3
Nhap thong tin cua sv thu 3 :
Ma sv: 9
Ho dem: 9
Ten: 9
Ngay sinh: 9
Thang sinh: 9
Nam sinh: 9
Gioi tinh: 9
Ho khau: 9
Diem: 9
Hien thi thong tin vua nhap:
5 5
5-5-5 5 5
3 3
3-3-3 3 3
9 9
9-9-9 9 9
Danh sach sau khoản thời gian sap xep la:
3 3
3-3-3 3 3
5 5
5-5-5 5 5
9 9
9-9-9 9 9
Trong khi, bản thân cũng có thể có một bài khuyên bảo chi tiết cùng nâng cao hơn: các bài luyện tập làm chủ sinc viên áp dụng struct trong C. Các các bạn tiếp tục xem thêm nội dung bài viết này nhé!
Tài liệu tham khảo
Các nội dung bài viết vào khóa họcBài trước: Bài 67. Cấp vạc đụng mảng 2D vào CBài sau: Bài 69. Cmùi hương trình cai quản sinc viên áp dụng structTAGS

Giáo trình Kỹ thuật xây dựng C – Phạm Vnạp năng lượng Ất
<Đồ án> Hướng dẫn code game rắn săn uống mồi vào C
Bài 70. Đọc ghi file trong C
Bài 69. Cmùi hương trình cai quản sinh viên sử dụng struct
Bài 67. Cấp phát hễ mảng 2D trong C
Bài 66. Cấp phân phát bộ lưu trữ cồn trong C
Subscribe
Connect with
Notify of
new follow-up comments
Name*
Email*
Website
Connect with
Name*
Email*
Website
4 Bình luận
Inline Feedbacks
View all comments
Load More Comments
Kchất hóa học miễn phí
Luyện tập tứ duy lập trình sẵn miễn phí tổn, tmê mệt gia ngay
Lập Trình Không Khó là một trong xã hội share và huấn luyện lập trình sẵn phi lợi nhuận số 1 tại đất nước hình chữ S.
Liên hệ hoặc Hợp tác & Quảng cáo
Blogger
RSS
Youtube
BÀI VIẾT HAY
Bài 1. Giới thiệu khóa huấn luyện “Học C Bá Đạo”
1000 bài bác tập thiết kế C/C++ gồm giải mã của thầy Khang
Kiểm tra số nguim tố thực hiện C/C++ với Java
CHUYÊN MỤC HAY
- BẠN BÈ và ĐỐI TÁC -
© 2018-20đôi mươi. Bản quyền trực thuộc Lập Trình Không Khó. Privacy và Terms
4
0
Would love sầu your thoughts, please bình luận.x
()
x
| Reply
Insert
NHIỀU BÀI VIẾT HƠN