intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 6

Chia sẻ: Dqwdqwdqwd Dqwfwef | Ngày: | Loại File: PDF | Số trang:8

65
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mã C có thể được dịch và thi hành trong hầu hết các máy tính, hơn hẳn các ngôn ngữ hiện tại trong khi đó thì Assembler chỉ có thể chạy trong một số máy tính đặc biệt. Vì lý do này C được xem là ngôn ngữ bậc trung.

Chủ đề:
Lưu

Nội dung Text: Hệ UNIX - Ngôn Ngữ C, ANSI C, ISO C, C++ phần 6

  1. Updatesofts.com Ebooks Team R t nhi u l p trình viên kinh nghi m khuyên r ng t t c các hàm nên ñư c khai báo m u. ðó cũng là l i khuyên c a tôi, nh t là trong trư ng h p có nhi u hàm ho c chúng r t dài, khi ñó vi c khai báo t t c các hàm cùng m t ch cho phép chúng ta bi t ph i g i các hàm như th nào, vì v y ti t ki m ñư c th i gian. Trang 40
  2. Updatesofts.com Ebooks Team M ng M ng là m t dãy các ph n t có cùng ki u ñư c ñ t liên ti p trong b nh và có th truy xu t ñ n t ng ph n t b ng cách thêm m t ch s vào sau tên c a m ng. ði u này có nghĩa là, ví d , chúng ta có th lưu 5 giá tr ki u int mà không c n ph i khai báo 5 bi n khác nhau.Ví d , m t m ng ch a 5 giá tr nguyên ki u int có tên là billy có th ñư c bi u di n như sau: trong ñó m i m t ô tr ng bi u di n m t ph n t c a m ng, trong trư ng h p này là các giá tr nguyên ki u int. Chúng ñư c ñánh s t 0 ñ n 4 vì ph n t ñ u tiên c a m ng luôn là 0 b t k ñ dài c a nó là bao nhiêu. Như b t kì bi n nào khác, m t m ng ph i ñư c khai báo trư c khi có th s d ng. M t khai báo ñi n hình cho m t m ng trong C++ như sau: type name [elements]; trong ñó type là m t ki u d li u h p l (int, float...), name là m t tên bi n h p l và trư ng elements ch ñ nh m ng ñó s ch a bao nhiêu ph n t Vì v y, ñ khai báo billy như ñã trình bày trên chúng ta ch c n m t dòng ñơn gi n như sau: int billy [5]; Chú ý: Trư ng elements bên trong c p ngo c [] ph i là m t giá tr h ng khi khai báo m t m ng, vì m ng là m t kh i nh tĩnh có kích c xác ñ nh và trình biên d ch ph i có kh năng xác ñ nh xem c n bao nhiêu b nh ñ c p phát cho m ng trư c khi các l nh có th ñư c th c hi n. Kh i t o m t m ng. Khi khai báo m t m ng v i t m ho t ñ ng ñ a phương (trong m t hàm), theo m c ñ nh nó s không ñư c kh i t o, vì v y n i dung c a nó là không xác ñ nh cho ñ n khi chúng ra lưu các giá tr lên ñó. N u chúng ta khai báo m t m ng toàn c c (bên ngoài t t c các hàm) nó s ñư c kh i t o và t t c các ph n t ñư c ñ t b ng 0. Vì v y n u chúng ta khai báo m ng toàn c c: Trang 41
  3. Updatesofts.com Ebooks Team int billy [5]; m i ph n t c a billy s ñư c kh i t o là 0: Nhưng thêm vào ñó, khi chúng ta khai báo m t m ng, chúng ta có th gán các giá tr kh i t o cho t ng ph n t c a nó. Ví d : int billy [5] = { 16, 2, 77, 40, 12071 }; l nh trên s khai báo m t m ng như sau: S ph n t trong m ng mà chúng ta kh i t o v i c p ngo c nh n { } ph i b ng s ph n t c a m ng ñã ñư c khai báo v i c p ngo c vuông [ ]. B i vì ñi u này có th ñư c coi là m t s l p l i không c n thi t nên C++ cho phép ñ tr ng gi a c p ngo c vuông, kích thư c c a m ng ñư c xác ñ nh b ng s giá tr gi a c p ngo c nh n. Truy xu t ñ n các ph n t c a m ng. b t kì ñi m nào c a chương trình trong t m ho t ñ ng c a m ng, chúng ta có th truy xu t t ng ph n t c a m ng ñ ñ c hay ch nh s a như là ñ i v i m t bi n bình thư ng. C u trúc c a nó như sau: name[index] Như trong ví d trư c ta có m ng billy g m 5 ph n t có ki u int, chúng ta có th truy xu t ñ n t ng ph n t c a m ng như sau: Ví d , ñ lưu giá tr 75 vào ph n t th ba c a billy ta vi t như sau: Trang 42
  4. Updatesofts.com Ebooks Team billy[2] = 75; và, ví d , ñ gán giá tr c a ph n t th 3 c a billy cho bi n a, chúng ta vi t: a = billy[2]; Vì v y, xét v m i phương di n, bi u th c billy[2] gi ng như b t kì m t bi n ki u int. Chú ý r ng ph n t th ba c a billy là billy[2], vì m ng b t ñ u t ch s 0. Vì v y, ph n t cu i cùng s là billy[4]. Vì v y n u chúng ta vi t billy[5], chúng ta s truy xu t ñ n ph n t th 6 c a m ng và vư t quá gi i h n c a m ng. Trong C++, vi c vư t quá gi i h n ch s c a m ng là hoàn toàn h p l , tuy nhiên nó có th gây ra nh ng v n ñ th c s khó phát hi n b i vì chúng không t o ra nh ng l i trong quá trình d ch nhưng chúng có th t o ra nh ng k t qu không mong mu n trong quá trình th c hi n. Nguyên nhân c a vi c này s ñư c nói ñ n kĩ hơn khi chúng ta b t ñ u s d ng con tr . C n ph i nh n m nh r ng chúng ta s d ng c p ngo c vuông cho hai tác v : ñ u tiên là ñ t kích thư c cho m ng khi khai báo chúng và th hai, ñ ch ñ nh ch s cho m t ph n t c th c a m ng khi xem xét ñ n nó. int billy[5]; // khai báo m t m ng m i. billy[2] = 75; // truy xu t ñ n m t ph n t ca m ng. M t vài thao tác h p l khác v i m ng: billy[0] = a; billy[a] = 75; b = billy [a+2]; billy[billy[a]] = billy[2] + 5; 12206 // ví d v m ng #include int billy [] = {16, 2, 77, 40, 12071}; int n, result=0; int main () { for ( n=0 ; n
  5. Updatesofts.com Ebooks Team M ng nhi u chi u. M ng nhi u chi u có th ñư c coi như m ng c a m ng, ví d , m t m ng hai chi u có th ñư c tư ng tư c như là m t b ng hai chi u g m các ph n t có ki u d li u c th và gi ng nhau. bi u di n m t m ng hai chi u kích thư c 3x5 có ki u int. Cách khai báo m ng jimmy này như sau: int jimmy [3][5]; và, ví d , cách ñ truy xu t ñ n ph n t th hai theo chi u d c và th tư theo chi u ngang trong m t bi u th c như sau: jimmy[1][3] (hãy nh r ng ch s c a m ng luôn b t ñ u t 0). M ng nhi u chi u không b gi i h n b i hai ch s (hai chi u), Chúng có th ch a bao nhi u ch s tùy thích m c dù ít khí c n ph i dùng ñ n m ng l n hơn 3 chi u. Hãy th xem xét lư ng b nh mà m t m ng có nhi u ch s c n ñ n. Ví d : char century [100][365][24][60][60]; gán m t giá tr char cho m i giây trong m t th k , ph i c n ñ n hơn 3 t giá tr chars! Chúng ta s ph i c n kho ng 3GB RAM ñ khai báo nó. M ng nhi u chi u th c ra là m t khái ni m tr u tư ng vì chúng ta có th có k t qu tương t v i m ng m t chi u b ng m t thao tác ñơn gi n gi a các ch s c a nó: int jimmy [3][5]; tương ñương v i int jimmy [15]; (3 * 5 = 15) Trang 44
  6. Updatesofts.com Ebooks Team Dư i ñây là hai ví d v i cùng m t k t qu như nhau, m t s d ng m ng hai chi u và m t s d ng m ng m t chi u: // multidimensional array // pseudo-multidimensional array #include #include #define WIDTH 5 #define WIDTH 5 #define HEIGHT 3 #define HEIGHT 3 int jimmy [HEIGHT][WIDTH]; int jimmy [HEIGHT * WIDTH]; int n,m; int n,m; int main () int main () { { for (n=0;n
  7. Updatesofts.com Ebooks Team c a nó, vi c này cũng t o ra k t qu th c t gi ng thao tác trên nhưng l i nhanh hơn nhi u và hi u qu hơn. ð có th nh n m ng là tham s thì ñi u duy nh t chúng ta ph i làm khi khai báo hàm là ch ñ nh trong ph n tham s ki u d li u cơ b n c a m ng, tên m ng và c p ngo c vuông tr ng. Ví d , hàm sau: void procedure (int arg[]) nh n vào m t tham s có ki u "m ng c a char" và có tên arg. ð truy n tham s cho hàm này m t m ng ñư c khai báo: int myarray [40]; ch c n g i hàm như sau: procedure (myarray); Dư i ñây là m t ví d c th 5 10 15 // arrays as parameters 2 4 6 8 10 #include void printarray (int arg[], int length) { for (int n=0; n
  8. Updatesofts.com Ebooks Team ví d , m t hàm v i tham s là m ng nhi u chi u có th như sau: void procedure (int myarray[][3][4]) chú ý r ng c p ngo c vuông ñ u tiên ñ tr ng nhưng các c p ngo c sau thì không. B n luôn luôn ph i làm v y vì trình biên d ch C++ ph i có kh năng xác ñ nh ñ l n c a các chi u thêm vào c a m ng. M ng, c m t chi u và nhi u chi u, khi truy n cho hàm như là m t tham s thư ng là nguyên nhân gây l i cho nh ng l p trình viên thi u kinh nghi m. Các b n nên ñ c bài 3.3. Con tr ñ có th hi u rõ hơn m ng ho t ñ ng như th nào. Trang 47
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2