1. Trang chủ
  2. » Công Nghệ Thông Tin

kỹ thuật lập trình C chuyên nghiệp phần 7 docx

14 302 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 407,26 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cấấu trúc u trúc -- Struct Struct C Cấấu trúc u trúc Struct Struct Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp HCM... Khái iệ Khái niệm „ CấuCấu trúctrúc làlà kiểukiểu dữdữ liệuliệu

Trang 1

Cấấu trúc u trúc Struct Struct C

Cấấu trúc u trúc Struct Struct

Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp HCM

Trang 2

Kiể ấ t ú

Kiểu cấu trúc

„ KháiKhái niệmniệm

„ KhaiKhai báobáo

„ TruyTruy xuấtxuất cáccác thànhthành phầnphần

„ TruyTruy xuấtxuất cáccác thànhthành phầnphần

„ CấuCấu trúctrúc && mảngmảng

„ ConCon trỏtrỏ đếnđến cấucấu trúctrúc

Trang 3

Khái iệ Khái niệm

„ CấuCấu trúctrúc làlà kiểukiểu dữdữ liệuliệu gồmgồm mộtmột nhómnhóm cáccác thành

thành phầnphần cócó kiểukiểu khôngkhông giốnggiống nhaunhau,, mỗimỗi

hà h

hà h hầhầ đđ áá đị hđị h bằbằ ộộ êê iê thành

thành phầnphần đượcđược xácxác địnhđịnh bằngbằng mộtmột têntên riêngriêng biệt

biệt ((kiểukiểu dữdữ liệuliệu trừutrừu tượngtượng –– AbstractAbstract DataData Type

Type –– ADT)ADT)

Type

Type ADT)ADT)

„ KiểuKiểu củacủa mỗimỗi thànhthành phầnphần trongtrong cấucấu trúctrúc làlà mộtmột

„ KiểuKiểu củacủa mỗimỗi thànhthành phầnphần trongtrong cấucấu trúctrúc làlà mộtmột kiếu

kiếu đãđã đượcđược địnhđịnh nghĩanghĩa trướctrước,, kểkể cảcả mảngmảng vàvà các

các cấucấu trúctrúc kháckhác

Trang 4

Cấ t ú Kh i bá Kh i bá C C

Cấu trúc

Một

Một kiểukiểu cấucấu trúctrúc đượcđược địnhđịnh nghĩanghĩa vớivới từtừ khóakhóa struct struct

Một

Một kiểukiểu cấucấu trúctrúc đượcđược địnhđịnh nghĩanghĩa vớivới từtừ khóakhóa struct struct

typedef struct Tênkiểu

{

Kiểuthànhphần p Tênthànhphần Tênthànhphần; p ; Kiểuthànhphần Tênthànhphần Tênthànhphần; ; Kiểuthànhphần Tênthànhphần Tênthànhphần; ;

Kiểuthànhphần Tênthànhphần Tênthànhphần; ; Kiểuthànhphần Tênthànhphần Tênthànhphần; ;

}

}; ;

Trang 5

Cấ t ú í d

Cấu trúc

typedef struct TBook

typedef struct TDate yp

{ char title[80]; char author[80];

yp

{

char day;

char month; char author[80];

float price;

char isbn[20]; };

char month;

int year;

};

};

typedef struct TStudent

{

char ID[10];

char firstname[10];

char lastname[20];

//khai báo các biến

TBook book;

TStudent list[100];

char lastname[20];

TDate dob;

float marks[10];

};

TStudent list[100]; };

Trang 6

Cấ t ú T T ấ á hà h hầ ấ á hà h hầ

„ CáCá thà hthà h hầhầ ủủ ộtột biếbiế kiểkiể ấấ t út ú đđ tt ất

Cấu trúc

„ CácCác thànhthành phầnphần củacủa mộtmột biếnbiến kiểukiểu cấucấu trúctrúc đượcđược truytruy xuấtxuất thông

thông quaqua têntên biến,biến, dấudấu "" "" vàvà têntên thànhthành phầnphần

void Print(TStudent m)

{

printf("Name : %s %s\n"

printf( Name : %s %s\n ,

m.firstname, m.lastname);

printf("Student ID : %s\n", m.ID);

printf("Date of birth : %hi/%hi/%i"

printf("Date of birth : %hi/%hi/%i",

m.dob.day, m.dob.month, m.dob.year); printf("Marks : ");

f (i t i 0 i 10 i )

for (int i=0; i<10; i++)

printf("%.2f ", m.marks[i]);

}

Trang 7

Cấ t ú T T ấ á hà h hầ ấ á hà h hầ

Cấu trúc

void ReadInfo(TStudent &m)

{

printf("Type student ID: ");

scanf("%s", m.ID);

printf("Type first name: ");

gets(m.firstname);

printf("Type last name: ");

gets(m.lastname);

printf("Date of birth (d m y): ");

scanf("%hi %hi %i", &(m.dob.day),

&(m.dob.month), &(m.dob.year)); printf("Marks (10 floats): ");

for (int i=0; i<10; i++)

scanf("%f", &(m.marks[i]));

}

Trang 8

Kí h th ớ ủ ột ấ t ú

Kích thước của một cấu trúc

Kí h

Kí h th ớth ớ kiểkiể dữdữ liệliệ ấấ t út ú

„ KíchKích thướcthước kiểukiểu dữdữ liệuliệu cấucấu trúctrúc::

sizeof sizeof(<<(<<typenametypename>>)>>) sizeof

sizeof(( typename ))

„ vdvd::

SinhVien_t_size SinhVien_t_size = = sizeofsizeof((SinhVienSinhVien);); // 48// 48

Trang 9

Mả á Cấ t ú

Mảng các Cấu trúc

Kh i

Kh i bb biế ảả áá CấCấ t út ú ũũ iố hh kh ikh i bábá

„ Khai Khai baobao biếnbiến mảngmảng cáccác CấuCấu trúctrúc cũngcũng giốnggiống nhưnhư khaikhai báobáo biến

biến mảngmảng trêntrên cáccác kiểukiểu dữdữ liệuliệu cơcơ bảnbản kháckhác

„ DùngDùng têntên mảngmảng khikhi truytruy cậpcập từngtừng phầnphần tửtử trongtrong mảngmảng cáccác cấu

cấu trúctrúc vàvà toántoán tửtử thànhthành viênviên đểđể truytruy cậpcập cáccác trườngtrường dữdữ liệu

liệu củacủa từngtừng thànhthành phầnphần cấucấu trúctrúc

liệu

liệu củacủa từngtừng thànhthành phầnphần cấucấu trúctrúc

struct SinhVien{{ SinhVien mang[100];

char hoten[31];

int namsinh;

char noisinh[4];

SinhVien mang[100];

… char noisinh[4];

char maso[11];

} mang[i].namsinh

Trang 10

C t ỏ đế Cấ t ú

Con trỏ đến Cấu trúc

Kh i

Kh i bábá t ỏt ỏ đếđế ấấ t út ú tt tt hh áá kiểkiể dữdữ

„ Khai Khai báobáo con con trỏtrỏ đếnđến cấucấu trúctrúc tươngtương tựtự nhưnhư cáccác kiểukiểu dữdữ

liệu

liệu kháckhác

SinhVien SinhVien **SV_ptrSV_ptr

„ ToánToán tửtử truytruy cậpcập trườngtrường thànhthành phầnphần củacủa cấucấu trúctrúc do con do con trỏtrỏ chỉ

chỉ đếnđến: : >>

SV_ptr

SV_ptr >>namsinhnamsinh

SV t

SV t >> i i hi i h SV_ptr

SV_ptr >>noisinhnoisinh

Trang 11

U i

Union

Kh i

Kh i bábá ii đđ dù đểđể kh ikh i bábá áá biếbiế dùdù

„ Khai Khai báobáo union union đượcđược dùngdùng đểđể khaikhai báobáo cáccác biếnbiến dùngdùng

chung

chung bộbộ nhớnhớ

union

union int_or_longint_or_long {{

int ii;;

long l;

} } a_numbera_number; ;

„ CácCác thànhthành phầnphần củacủa union union cócó thểthể khôngkhông cócó kíchkích thướcthước bằngbằng nhau

nhau

„ KíchKích thướcthước bộbộ nhớnhớ trongtrong khaikhai báobáo unionunion làlà kíchkích thướcthước củacủa

„ KíchKích thướcthước bộbộ nhớnhớ trongtrong khaikhai báobáo union union làlà kíchkích thướcthước củacủa kiểu

kiểu dữdữ liệuliệu lớnlớn nhấtnhất cócó trongtrong khaikhai báobáo union.union

Trang 12

Ví d

Ví dụ

11 union union int or long int or long {{

1 union union int_or_long int_or_long {{

2 int ii;;

3 long ll;;

4 }} a_number a_number;;

5 a_number a_number ii = = 55;;

66 a number a number ll = = 100 100L L;;

6 a_number a_number ll 100 100L L;;

7 // // anonymous anonymous union union

8 union union {{

9 int ii;;

10 float ff;;;;

11 }};;

12 ii = = 10 10;;

ff 22 22

13 ff = = 22 22;;

Trang 13

Kiểu

Kiểu Enum Enum ((liệt liệt kê kê))

„ KiểuKiểu EnumEnum::

… LiệtLiệt kêkê toàntoàn bộbộ giágiá trịtrị màmà biếnbiến cócó thểthể nhậnnhận

„ KhaiKhai báobáo::

enum

enum <<tên_kiểu_enumtên_kiểu_enum>{>{

<

<danh sách các trịdanh sách các trị> _ ị_ ị>

}};;

„ VíVí dụdụ::ụụ

enum

enum day{Hai,day{Hai, BaBa,, TuTu,, Nam,Nam, SauSau,, Bay,Bay, CN}CN};;

day day ngayngay;;

day gaygay;;

ngay

ngay == TuTu;; //// 22 enum

enum modes{LASTMODEmodes{LASTMODE == 11,, BWBW4040 == 00}} enum

enum modes{LASTMODEmodes{LASTMODE 11,, BWBW4040 00}}

Trang 14

T Tậập tin p tin File File T

Tậập tin p tin File File

Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp HCM

Ngày đăng: 22/07/2014, 16:21

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm