Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 10
Số trang: 7
Loại file: pdf
Dung lượng: 108.82 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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.
Nội dung trích xuất từ tài liệu:
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 10Updatesofts.com Ebooks Team for (n=0; nUpdatesofts.com Ebooks Team cout title; cout titlenó có th ñư c d ch thành:(*movies).titlec 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.titlenó 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, trongtrư 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 moviesmovies.title Ph n t title c a c u trúc ñư c tr b i moviesmovies->title (*movies).title Giá tr ñư c tr b i ph n t title c a c u trúc*movies.title *(movies.title) moviesCác c u trúc l ng nhauCá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ó thlà m t c u trúc khác.struct movies_t { char title [50]; Trang 73Updatesofts.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.namemaria.favourite_movie.titlecharlie.favourite_movie.yearpfriends->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 ingô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 tl 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 scó thêm các thông tin chi ti t trong ph n Trang 74Updatesofts.com Ebooks TeamCá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 dli 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 ñã ñ nhnghĩa và new_type_name là tên c a ki u d li u m i. Ví dtypedef 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_tvà field ki u char, unsigned int, char* ki u char[50], chúng ta hoàn toàn có th sd 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 ptypedef có th h u d ng khi b n mu nl 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.UnionUnion 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 ukhá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 75Updatesofts.com Ebooks TeamT 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 tmytypes.cmytypes.imytypes.fm 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 chtrong 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ácthà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 im 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 ñ nnhó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úctrong 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ô danhTrong C++ chúng ta có th s d ng các unions vô danh. N u chúng ta ñ t m t uniontrong 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ànhvô 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 ñ ntê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 nkhai báo sau ñây: union union vô danh Trang 76Updatesofts.com Ebooks Teamstruct { struct { char title[50]; char title[50]; char author[50]; char author[50]; union { union { float dollars; float dollars; int yens; int yens ...
Nội dung trích xuất từ tài liệu:
Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 10Updatesofts.com Ebooks Team for (n=0; nUpdatesofts.com Ebooks Team cout title; cout titlenó có th ñư c d ch thành:(*movies).titlec 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.titlenó 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, trongtrư 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 moviesmovies.title Ph n t title c a c u trúc ñư c tr b i moviesmovies->title (*movies).title Giá tr ñư c tr b i ph n t title c a c u trúc*movies.title *(movies.title) moviesCác c u trúc l ng nhauCá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ó thlà m t c u trúc khác.struct movies_t { char title [50]; Trang 73Updatesofts.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.namemaria.favourite_movie.titlecharlie.favourite_movie.yearpfriends->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 ingô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 tl 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 scó thêm các thông tin chi ti t trong ph n Trang 74Updatesofts.com Ebooks TeamCá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 dli 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 ñã ñ nhnghĩa và new_type_name là tên c a ki u d li u m i. Ví dtypedef 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_tvà field ki u char, unsigned int, char* ki u char[50], chúng ta hoàn toàn có th sd 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 ptypedef có th h u d ng khi b n mu nl 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.UnionUnion 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 ukhá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 75Updatesofts.com Ebooks TeamT 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 tmytypes.cmytypes.imytypes.fm 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 chtrong 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ácthà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 im 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 ñ nnhó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úctrong 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ô danhTrong C++ chúng ta có th s d ng các unions vô danh. N u chúng ta ñ t m t uniontrong 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ànhvô 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 ñ ntê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 nkhai báo sau ñây: union union vô danh Trang 76Updatesofts.com Ebooks Teamstruct { struct { char title[50]; char title[50]; char author[50]; char author[50]; union { union { float dollars; float dollars; int yens; int yens ...
Tìm kiếm theo từ khóa liên quan:
Tài liệu lập trình ngôn ngữ lập trình ngôn ngữ C Ngôn ngữ lập trình mệnh lệnh Tiêu chuẩn ANSI tiêu chuẩn ISOTài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 277 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 268 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 267 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 227 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 209 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 186 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 170 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 169 0 0