YOMEDIA
ADSENSE
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 10
73
lượt xem 6
download
lượt xem 6
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Mặc dù C còn thiếu nhiều chức năng hữu ích nhưng lý do quan trọng để C được chấp nhận vì nó cho phép các trình dịch mới được tạo ra một cách nhanh chóng trên các nền tảng mới và vì nó cho phép người lập trình dễ kiểm soát được những gì mà chương trình (do họ viết) thực thi.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 10
- Updatesofts.com Ebooks Team for (n=0; n
- Updatesofts.com Ebooks Team cout title; cout title nó có th ñư c d ch thành: (*movies).title c hai bi u th c movies->title và (*movies).title ñ u h p l và chúng ñ u dùng ñ tham chi u ñ n ph n t title c a c u trúc ñư c tr b i movies. B n c n phân bi t rõ ràng v i: *movies.title nó tương ñương v i *(movies.title) l nh này dùng ñ tính toán giá tr ñư c tr b i ph n t title c a c u trúc movies, trong trư ng h p này (title không ph i là m t con tr ) nó ch ng có ý nghĩa gì nhi u. B n dư i ñây t ng k t t t c các k t h p có th ñư c gi a con tr và c u trúc: Bi u th c Mô t Tương ñương v i Ph n t title c a c u trúc movies movies.title Ph n t title c a c u trúc ñư c tr b i movies movies->title (*movies).title Giá tr ñư c tr b i ph n t title c a c u trúc *movies.title *(movies.title) movies Các c u trúc l ng nhau Các c u trúc có th ñư c ñ t l ng nhau vì v y m t ph n t h p l c a m t c u trúc có th là m t c u trúc khác. struct movies_t { char title [50]; Trang 73
- Updatesofts.com Ebooks Team int year; } struct friends_t { char name [50]; char email [50]; movies_t favourite_movie; } charlie, maria; friends_t * pfriends = &charlie; Vì v y, sau ph n khai báo trên chúng ta có th s d ng các bi u th c sau: charlie.name maria.favourite_movie.title charlie.favourite_movie.year pfriends->favourite_movie.year (trong ñó hai bi u th c cu i cùng là tương ñương). Các khái ni m cơ b n v c u trúc ñư c ñ c p ñ n trong ph n này là hoàn toàn gi ng v i ngôn ng C, tuy nhiên trong C++, c u trúc ñã ñư c m r ng thêm các ch c năng c a m t l p v i tính ch t ñ c trưng là t t c các ph n t c a nó ñ u là công c ng (public). B n s có thêm các thông tin chi ti t trong ph n Trang 74
- Updatesofts.com Ebooks Team Các ki u d li u t ñ nh nghĩa. Trong bài trư c chúng ta ñã xem xét m t lo i d li u ñư c ñ nh nghĩa b i ngư i dùng (ngư i l p trình): c u trúc. Nhưng có còn nhi u ki u d li u t ñ nh nghĩa khác: T ñ nh nghĩa các ki u d li u (typedef). C++ cho phép chúng ta ñ nh nghĩa các ki u d li u c a riêng mình d a trên các ki u d li u ñã có. ð có th làm vi c ñó chúng ta s s d ng t khoá typedef, d ng th c như sau: typedef existing_type new_type_name ; trong ñó existing_type là m t ki u d li u cơ b n hay b t kì m t ki u d li u ñã ñ nh nghĩa và new_type_name là tên c a ki u d li u m i. Ví d typedef char C; typedef unsigned int WORD; typedef char * string_t; typedef char field [50]; Trong trư ng h p này chúng ta ñã ñ nh nghĩa b n ki u d li u m i: C, WORD, string_t và field ki u char, unsigned int, char* ki u char[50], chúng ta hoàn toàn có th s d ng chúng như là các ki u d li u h p l : C achar, anotherchar, *ptchar1; WORD myword; string_t ptchar2; field name; ñ nh nghĩa m t ki u d li u ñư c dùng l p ñi l p typedef có th h u d ng khi b n mu n l i trong chương trình ho c ki u d li u b n mu n dùng có tên quá dài và b n mu n nó có tên ng n hơn. Union Union cho phép m t ph n b nh có th ñư c truy xu t dư i d ng nhi u ki u d li u khác nhau m c dù t t c chúng ñ u n m cùng m t v trí trong b nh . Ph n khai báo và s d ng nó tương t v i c u trúc nhưng ch c năng thì khác hoàn toàn: union model_name { type1 element1; type2 element2; type3 element3; . . } object_name; Trang 75
- Updatesofts.com Ebooks Team T t c các ph n t c a union ñ u chi m cùng m t ch trong b nh . Kích thư c c a nó là kích thư c c a ph n t l n nh t. Ví d : union mytypes_t { char c; int i; float f; } mytypes; ñ nh nghĩa ba ph n t mytypes.c mytypes.i mytypes.f m i ph n t có m t ki u d li u khác nhau. Nhưng vì t t c chúng ñ u n m cùng m t ch trong b nh nên b t kì s thay ñ i nào ñ i v i m t ph n t s nh hư ng t i t t c các thành ph n còn l i. M t trong nh ng công d ng c a union là dùng ñ k t h p m t ki u d liêu cơ b n v i m t m ng hay các c u trúc g m các ph n t nh hơn. Ví d : union mix_t{ long l; struct { short hi; short lo; } s; char c[4]; } mix; ñ nh nghĩa ba ph n t cho phép chúng ta truy xu t ñ n cùng m t nhóm 4 byte: mix.l, mix.s và mix.c mà chúng ta có th s d ng tuỳ theo vi c chúng ta mu n truy xu t ñ n nhóm 4 byte này như th nào. Tôi dùng nhi u ki u d li u khác nhau, m ng và c u trúc trong union ñ b n có th th y các cách khác nhau mà chúng ta có th truy xu t d li u. Các unions vô danh Trong C++ chúng ta có th s d ng các unions vô danh. N u chúng ta ñ t m t union trong m t c u trúc mà không ñ tên (ph n ñi sau c p ngo c nh n { }) union s tr thành vô danh và chúng ta có th truy xu t tr c ti p ñ n các ph n t c a nó mà không c n ñ n tên c a union (có c n cũng không ñư c). Ví d , hãy xem xét s khác bi t gi a hai ph n khai báo sau ñây: union union vô danh Trang 76
- Updatesofts.com Ebooks Team struct { struct { char title[50]; char title[50]; char author[50]; char author[50]; union { union { float dollars; float dollars; int yens; int yens; } price; }; } book; } book; S khác bi t duy nh t gi a hai ño n mã này là trong ño n mã ñ u tiên chúng ta ñ t tên cho union (price) còn trong cái th hai thì không. Khi truy nh p vào các ph n t dollars và yens, trong trư ng h p th nh t chúng ta vi t: book.price.dollars book.price.yens còn trong trư ng h p th hai: book.dollars book.yens M t l n n a tôi nh c l i r ng vì nó là m t union, hai trư ng dollars và yens ñ u chi m cùng m t ch trong b nh nên chúng không th gi hai giá tr khác nhau. Ki u li t kê (enum) Ki u d li u li t kê dùng ñ t o ra các ki u d li u ch a m t cái gì ñó hơi ñ c bi t m t chút, không ph i ki u s hay ki u kí t ho c các h ng true và false. D ng th c c a nó như sau: enum model_name { value1, value2, value3, . . } object_name; Ví d , chúng ta có th t o ra m t ki u d li u m i có tên color ñ lưu tr các màu v i ph n khai báo như sau: enum colors_t {black, blue, green, cyan, red, purple, yellow, white}; Chú ý r ng chúng ta không s d ng b t kì m t ki u d li u cơ b n nào trong ph n khai báo. Chúng ta ñã t o ra m t ki u d li u m i mà không d a trên b t kì ki u d li u nào có s n: ki u color_t, nh ng giá tr có th c a ki u color_t ñư c vi t trong c p ngo c nh n {}. Ví d , sau khi khai báo ki u li t kê, bi u th c sau s là h p l : colors_t mycolor; mycolor = blue; if (mycolor == green) mycolor = red; Trang 77
- Updatesofts.com Ebooks Team Trên th c t ki u d li u li t kê ñư c d ch là m t s nguyên và các giá tr c a nó là các h ng s nguyên ñư c ch ñ nh. N u ñi u này không ñ oc ch ñ nh, giá tr nguyên tương ñương v i ph n t ñ u tiên là 0 và các giá tr ti p theo c th tăng lên 1, Vì v y, trong ki u d li u colors_t mà chúng ta ñ nh nghĩa trên, white tương ñương v i 0, blue tương ñương v i 1, green tương ñương v i 2 và c ti p t c như th . N u chúng ta ch ñ nh m t giá tr nguyên cho m t giá tr nào ñó c a ki u d li u li t kê (trong ví d này là ph n t ñ u tiên) các giá tr ti p theo s là các giá tr nguyên ti p theo, ví d : enum months_t { january=1, february, march, april, may, june, july, august, september, october, november, december} y2k; trong trư ng h p này, bi n y2k có ki u d li u li t kê months_t có th ch a m t trong 12 giá tr t january ñ n december và tương ñương v i các giá tr nguyên t 1 ñ n 12, không ph i 0 ñ n 11 vì chúng ta ñã ñ t january b ng 1. Trang 78
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn