Professional Documents
Culture Documents
NMLT-Chap7 Struct
NMLT-Chap7 Struct
CHƯƠNG 7:
CẤU TRÚC STRUCT
ThS. Nguyễn Thị Ngọc Diễm
diemntn@uit.edu.vn
Nội dung
• Yêu cầu
• Lưu thông tin n SV?
• Truyền thông tin n SV vào hàm?
• Ý tưởng
• Gom những thông tin của cùng 1 SV thành một kiểu dữ liệu mới => Kiểu
struct
• Ví dụ
struct Point {
int x;
int y;
} A, B;
• Vídụ
struct Point {
int x, y;
} A = { 2912, 1706 }, B;
• Ví dụ
struct Point {
int x, y;
} A, *B;
cout << A.x << " " << A.y;
• Ví dụ
struct Point {
int x, y;
} *A;
• Ví dụ
struct Point {
int x, y;
} A = { 2912, 1706 }, B;
Point C;
// C1:
B = A;
// C2
B.x = A.x;
B.y = A.y * 2;
struct Rectangle {
Point TraiTren;
Point PhaiDuoi;
} Rec1;
Rec1.TraiTren.x = 2912;
Rec1.TraiTren.y = 1706;
struct NODE {
int value;
NODE *pNext;
};
struct bit_fields {
int bit_0 : 1;
int bit_1_to_4 : 4;
int bit_5 : 1;
int bit_6_to_15 : 10;
};
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
struct A {
int a;
double b;
};
sizeof(A) = ? ? ?
struct B1 { struct B2 {
int a; int a;
int b; double c;
double c; int b;
}; };
sizeof(B1) = ? ? ? sizeof(B2) = ? ? ?
#pragma pack(push, 1)
struct MYSTRUCT {
…
};
#pragma pack(pop)
struct A {
double a; a a a a a a a a
int b; b b b b c c c c
int c;
};
struct B { b b b b đệm 4B
int b;
double a;
a a a a a a a a
int c; c c c c đệm 4B
};
struct C {
int b; b b b b c c c c
int c; a a a a a a a a
double a;
};
struct A{
double x;
int y;
int z;
};
struct B{
int x;
double y;
int z;
};
struct C{
int x;
int y;
double z;
};
int main(){
A a={3000000000, 2, 1};
B b={1, 3000000000, 2};
C c={1, 2, 3000000000};
cout << "sizeof:" << endl;
cout << "A: " << sizeof(a) << endl;
cout << "B: " << sizeof(b) << endl;
cout << "C: " << sizeof(c) << endl << endl;
return 0;
}
INTRODUCTION TO PROGRAMING- THS. NGUYỄN THỊ NGỌC DIỄM 2018-2019 22
Mảng cấu trúc
• Mảng cấu trúc
• Tương tự như mảng với kiểu dữ liệu cơ sở (char, int, float, …)
struct Point {
int x, y;
};
Point arr1[20];
Point arr2[10] = { { 3, 2 }, { 4, 4 }, {
2, 7 } };
struct Point {
int x, y;
};
void xuat1(int x, int y) { … };
void xuat2(Point A) { … };
void xuat3(Point &A) { … };
void xuat4(Point *A) { … };
0 1 2 3 4 … … 0 1 2 3 … … …
01 02 00 00 00 … … 02 00 00 00 … … …
01
c n c
n
union date_tag {
char full_date[9];
struct part_date_tag {
char month[2];
char break_value1;
char day[2];
char break_value2;
char year[2];
};
} date = {"31/07/1989"};
struct generic_tag {
char type;
union share_tag {
char c;
int i;
float f;
};
};
int main() {
sv1.HoTen = "Nguyen Van int main() {
A"; strcpy(sv1.HoTen,
sv1.DiemToan = 10; "Nguyen Van A");
sv1.DiemHoa = 6.5; sv1.DiemToan = 10;
sv1.DiemLy = 9; sv1.DiemHoa = 6.5;
} sv1.DiemLy = 9;
}