Tải bản đầy đủ (.pdf) (8 trang)

Dữ liệu kiểu cấu trúc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (79.34 KB, 8 trang )

Chỉång VII : Dỉỵ liãûu kiãøu cáúu trục


Trang 86
Ch−¬ng VII.
DỈỴ LIÃÛU KIÃØU CÁÚU TRỤC
I.
Kiãøu cáúu trục:
I.1.

Khai bạo v khåíi tảo kiãøu biãún cáúu trục :
Mng l táûp håüp gäưm cạc pháưn tỉí cọ cng kiãøu. Khi ta mún tảo kiãøu dỉỵ liãûu m cạc
pháưn tỉí ca chụng cọ kiãøu khạc nhau nhỉng cọ sỉû liãn kãút våïi nhau, ta sỉí dủng kiãøu struct.
Máùu : struct tãn_kiãøu_cáúu_trục
{ khai bạo cạc thnh pháưn (cạc trỉåìng)
};
Vê dủ : struct khach
{ char ten[20];
char diachi[100];
int tuoi;
int dienthoai;
};
Ta cọ mäüt kiãøu måïi l kiãøu khach gäưm cạc trỉåìng ten, diachi, tuoi v dienthoai.
Khai bạo v khåíi tảo biãún :
struct khach khach_thu_1 = {“Nguyen Van A”,”Da Nang”,20,888888};
Ta cng cọ thãø khai bạo biãún cng lục våïi kiãøu nhỉ sau:
struct khach
{ char ten[20];
char diachi[100];
int tuoi;
int dienthoai;


} khach_thu_1, khach_thu_2;
Ta cọ thãø khai bạo biãún khäng khai bạo kiãøu:
struct
{ char ten[20];
char diachi[100];
int tuoi;
int dienthoai;
} khach_thu_1, khach_thu_2;
Khai bạo kiãøu dng typedef:
typedef struct
{ char ten[20];
char diachi[100];
int tuoi;
int dienthoai;
} khach;
khi khai bạo biãún ta s khäng dng tỉì khọa struct:
Chỉång VII : Dỉỵ liãûu kiãøu cáúu trục


Trang 87
khach khach_thu_1, khach_thu_2;
Âënh nghéa kiãøu cáúu trục läưng nhau:
Vê dủ :
struct ngay
{ int ngaythu;
int thang;
int nam;
};
struct nhansu
{ char hoten[20];

struct ngay ngaysinh;
int gioitinh;
float hsluong;
}nguoi1;
I.2.
Truy cáûp âãún cạc pháưn tỉí ca mäüt biãún kiãøu cáúu trục :
Máùu : tãn_biãún.tãn_pháưn_tỉí
Vê dủ : strcpy(khach_thu_1.ten,”Tran Van B”);
khach_thu_1.tuoi=40;
printf(“Tuoi cua %s la %d”, khach_thu_1.ten, khach_thu_1.tuoi);
Ta cọ thãø gạn biãún cáúu trục ny cho biãún cáúu trục khạc cọ cng kiãøu :
khach_thu_2= khach_thu_1;
Ta cọ thãø khåíi tảo biãún cáúu trục tỉì lục khai bạo nhỉ khåíi tảo mng:
khach khach_1={“John”,”17 Le Duan, Da Nang”,40,876543};
Våïi cạc cáúu trục läưng nhau ta cng truy cáûp tỉång tỉû.
Vê dủ : nguoi1.ngaysinh.nam
Ta cọ thãø sỉí dủng phẹp toạn láúy âëa chè âäúi våïi thnh pháưn cáúu trục
Vê dủ : scanf(“%d”,&khach_thu_1.tuoi);
Våïi thnh pháưn cáúu trục khäng ngun, ta nháûp thäng qua biãún trung gian.
I.3.
Thnh pháưn kiãøu field:
Khi ta mún cọ âỉåüc cạc thnh pháưn ngun giạ trë nh, tiãút kiãûm bäü nhåï thç ta dng
kiãøu field. Cạc pháưn tỉí âỉåüc âënh nghéa âỉåïi dảng cạc bit cọ dáúu hồûc khäng dáúu. Âäü di ca
mäùi trỉåìng khäng vỉåüt quạ 16 bit.
struct bit_field
{ int bit_1 : 1;
int bits_2_to_5 : 4;
int bit_6 : 1;
int bits_7_to_16 : 10;
} bit_var;

Ta khäng thãø láúy âëa chè thnh pháưn kiãøu field, khäng thãø xáy dỉûng mng kiãøu field v
thnh pháưn kiãøu field khäng thãø lm giạ trë tr vãư.
Chỉång VII : Dỉỵ liãûu kiãøu cáúu trục


Trang 88
I.4.
Con tr tr âãún kiãøu cáúu trục :
typedef struct
{ int x;
int y;
}diem;
diem diem1,diem2;
diem *pointer=&diem1;
Ta dng con tr âãø truy cáûp âãún cạc pháưn tỉí ca cáúu trục :
tãn_con_tr->tãn_thnh_pháưn
hồûc (*tãn_con_tr).tãn_thnh_pháưn
toạn tỉí -> gi l toạn tỉí tr tåïi
Vê dủ : pointer->x=5; tỉång âỉång våïi diem1.x
(*pointer).y=6; tỉång âỉång våïi diem1.y
Tỉång tỉû nhỉ con tr biãún thỉåìng, phẹp toạn säú hc âäúi våïi con tr cáúu trục cng hoảt
âäüng tỉång tỉû.
I.5.
Mng cáúu trục :
Ta khai bạo ta âäü bàòng cáúu trục :
typedef struct
{ int x;
int y;
}diem;
diem diem1,diem2;

Âãø lỉu trỉỵ ta âäü ca 20 âiãøm ta dng mng :
diem taphop[20]= { {2,3},
{3,4}
};
Cng nhỉ mng khạc, mng cáúu trục cng âỉåüc âạnh säú thỉï tỉû tỉì 0.
Âãø truy cáûp vo cạc pháưn tỉí ca mng :
taphop[3].x=4;
taphop[3].y=6;
Cng nhỉ cạc biãún cáúu trục, ta cọ thãø gạn cạc pháưn tỉí ca mng cho nhau v cho cạc
biãún cáúu trục âån.
Chụ : thỉåìng khäng âỉåüc sỉí dủng phẹp toạn láúy âëa chè âäúi våïi cạc thnh pháưn ca
mng cáúu trục.
Âãø cáúp phạt bäü nhåï hiãûu qu, ta dng hm malloc:
diem *d;
int sodiem;
d=(diem *)malloc(sodiem*sizeof(diem));
I.6.
Cáúu trục v hm :
Chuøn tỉìng pháưn tỉí ca biãún cáúu trục hồûc c biãún cáúu trục cho hm :
Chổồng VII : Dổợ lióỷu kióứu cỏỳu truùc


Trang 89
ham1(diem1.x);
ham2(diem1.y);
Ta coù thóứ chuyóứn õởa chố cuớa tổỡng phỏửn tổớ cho haỡm.
ham1(&diem1.x);
ham2(&diem1.y);

Vờ duỷ :

struct diem
{ int x;
int y;
} ;
void ham(struct diem d)
{
printf("\nd.x=%4d\nd.y=%4d",d.x,d.y);
}
void main()
{
struct diem diem1;
diem1.x=2;diem1.y=4;
ham(diem1);
}

óứ thay õọứi giaù trở cuớa cỏỳu truùc ta truyóửn con troớ cỏỳu truùc.
Giaù trở traớ vóử cuớa haỡm coù thóứ laỡ cỏỳu truùc hoỷc con troớ cỏỳu truùc.

Vờ duỷ:
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
typedef struct
{ char ten[30] ;
int diem ;
char kq[5] ;
} kieuHV;
kieuHV *lop , *p , tam ;
/* Ham nhap danh sach */
void nhapds ( int n , kieuHV lop[ ])

{ int i , diem ;
p = lop ;
for ( i = 0 ; i < n ; i++)
{ printf("\nNhap Ho ten nguoi thu %d : " , i + 1 ) ; gets ( p->ten);
printf ( " diem = " ) ; scanf ( "%d" , &diem ) ; p->diem = diem ;
Chổồng VII : Dổợ lióỷu kióứu cỏỳu truùc


Trang 90
printf ("%c", getchar()); /* khu stdin */
p++ ;
}
}
/* Ham sap xep*/
void sapxep ( int n, kieuHV lop[ ])
{ int i , j ; kieuHV tam ;
for ( i = 0 ; i < n-1 ; i++)
for ( j=i + 1 ; j< n ; j++)
if ( lop[i].diem < lop[j].diem )
{ tam = lop[i] ; lop[i] = lop [j] ; lop [j] = tam ; }
}
/* ham in danh sach */
void inds( int n, kieuHV lop[] )
{ int i ;
for ( i = 0 ; i < n ; i++ )
{ printf ("%20s%5d ", lop[i].ten,lop[i].diem );
printf ("\n") ; /* xuong hang */
}
}
/* chuong trinh chinh */

void main ( )
{ int i , j, n , t, diem ;
printf ("\n Nhap si so : ") ; scanf ( "%d", &n);
lop = (kieuHV*)malloc ( n * sizeof ( kieuHV) ) ;
printf ("%c", getchar ());
nhapds(n, lop ) ; sapxep ( n, lop ) ; inds ( n, lop );
getch ( );
}
II.
Kióứu Union:
Cuợng nhổ cỏỳu truùc, union gọửm nhióửu thaỡnh phỏửn khaùc nhau, nhổng chuùng khaùc nhau ồớ
chọự : caùc thaỡnh phỏửn cuớa cỏỳu truùc chióỳm caùc vuỡng nhồù khaùc nhau trong khi caùc thaỡnh phỏửn cuớa
union õổồỹc cỏỳp phaùt chung mọỹt vuỡng nhồù. ọỹ daỡi cuớa union bũng õọỹ daỡi cuớa thaỡnh phỏửn lồùn
nhỏỳt.
Vióỷc khai baùo vaỡ truy xuỏỳt caùc thaỡnh phỏửn cuớa union cuợng tổồng tổỷ nhổ struct.
Seợ laỡ vọ nghộa nóỳu chuùng ta khồới taỷo cho tỏỳt caớ caùc thaỡnh phỏửn cuớa bióỳn union.
Ta coù thóứ khồới taỷo : union u { char ch;
int x;
} a_union = {`H'};


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×