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 9

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

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

Dùng ngôn ngữ tiền xử lý, tức là các câu lệnh tiền xử lý C, cho các nhiệm vụ như là định nghĩa các macro và hàm chứa nhiều tập tin mã nguồn (bằng cách dùng câu lệnh tiền xử lý dạng #include chẳng hạn).

Chủ đề:
Lưu

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

  1. Updatesofts.com Ebooks Team g = (*functocall)(x,y); return (g); } int main () { int m,n; m = operation (7, 5, &addition); n = operation (20, m, minus); cout
  2. Updatesofts.com Ebooks Team B nh ñ ng Cho ñ n nay, trong các chương trình c a chúng ta, t t c nh ng ph n b nh chúng ta có th s d ng là các bi n các m ng và các ñ i tư ng khác mà chúng ta ñã khai báo. Kích c c a chúng là c ñ nh và không th thay ñ i trong th i gian chương trình ch y. Nhưng n u chúng ta c n m t lư ng b nh mà kích c c a nó ch có th ñư c xác ñ nh khi chương trình ch y, ví d như trong trư ng h p chúng ta nh n thông tin t ngư i dùng ñ xác ñ nh lư ng b nh c n thi t. Gi i pháp ñây chính là b nh ñ ng, C++ ñã tích h p hai toán t new và delete ñ th c hi n vi c này Hai toán t new và delete ch có trong C++. ph n sau c a bài chúng ta s bi t nh ng thao tác tương ñương v i các toán t này trong C. Toán t new và new[ ] ð có th có ñư c b nh ñ ng chúng ta có th dùng toán t new. Theo sau toán t này là tên ki u d li u và có th là s ph n t c n thi t ñư c ñ t trong c p ngo c vuông. Nó tr v m t con tr tr t i ñ u c a kh i nh v a ñư c c p phát. D ng th c c a toán t này như sau: pointer = new type ho c pointer = new type [elements] Bi u th c ñ u tien ñư c dùng ñ c p phát b nh ch a m t ph n t có ki u type. L nh th hai ñư c dùng ñ c p phát m t kh i nh (m t m ng) g m các ph n t ki u type. Ví d : int * bobby; bobby = new int [5]; trong trư ng h p này, h ñi u hành dành ch cho 5 ph n t ki u int trong b nh và tr v m t con tr tr ñ n ñ u c a kh i nh . Vì v y lúc này bobby tr ñ n m t kh i nh h p l g m 5 ph n t int. B n có th h i tôi là có gì khác nhau gi a vi c khai báo m t m ng v i vi c c p phát b nh cho m t con tr như chúng ta v a làm. ði u quan tr ng nh t là kích thư c c a m t Trang 65
  3. Updatesofts.com Ebooks Team m ng ph i là m t h ng, ñi u này gi i h n kích thư c c a m ng ñ n kích thư c mà chúng ta ch n khi thi t k chương trình trong khi ñó c p phát b nh ñ ng cho phép c p phát b nh trong quá trình ch y v i kích thư c b t kì. B nh ñ ng nói chung ñư c qu n lí b i h ñi u hành và trong các môi trư ng ña nhi m có th ch y m t lúc vài chương trình có m t kh năng có th x y ra là h t b nh ñ c p phát. N u ñi u này x y ra và h ñi u hành không th c p phát b nh như chúng ta yêu c u v i toán t new, m t con tr null (zero) s ñư c tr v . Vì v y các b n nên ki m tra xem con tr tr v b i toán t new có b ng null hay không: int * bobby; bobby = new int [5]; if (bobby == NULL) { // error assigning memory. Take measures. }; Toán t delete. Vì b nh ñ ng ch c n thi t trong m t kho ng th i gian nh t ñ nh, khi nó không c n dùng ñ n n a thì nó s ñư c gi i phóng ñ có th c p phát cho các nhu c u khác trong tương lai. ð th c hi n vi c này ta dùng toán t delete, d ng th c c a nó như sau: delete pointer; ho c delete [] pointer; Bi u th c ñ u tiên nên ñư c dùng ñ gi i phóng b nh ñư c c p phát cho m t ph n t và l nh th hai dùng ñ gi i phóng m t kh i nh g m nhi u ph n t (m ng). Trong h u h t các trình d ch c hai bi u th c là tương ñương m c dù chúng là rõ ràng là hai toán t khác nhau. How many numbers do you want to // rememb-o-matic type in? 5 #include Enter number : 75 #include Enter number : 436 Enter number : 1067 int main () Enter number : 8 { Enter number : 32 char input [100]; You have entered: 75, 436, 1067, 8, int i,n; 32, long * l, total = 0; cout
  4. Updatesofts.com Ebooks Team cout
  5. Updatesofts.com Ebooks Team Hàm calloc. calloc ho t ñ ng r t gi ng v i malloc, s khác nhau ch y u là khai báo m u c a nó: void * calloc (size_t nelements, size_t size); nó s d ng hai tham s thay vì m t. Hai tham s này ñư c nhân v i nhau ñ có ñư c kích thư c t ng c ng c a kh i nh c n c p phát. Thông thư ng tham s ñ u tiên (nelements) là s ph n t và tham s th c hai (size) là kích thư c c a m i ph n t . Ví d , chúng ta có th ñ nh nghĩa bobby v i calloc như sau: int * bobby; bobby = (int *) calloc (5, sizeof(int)); M t ñi m khác nhau n a gi a malloc và calloc là calloc kh i t o t t c các ph n t c a nó v 0. Hàm realloc. Nó thay ñ i kích thư c c a kh i nh ñã ñư c c p phát cho m t con tr . void * realloc (void * pointer, size_t size); tham s pointer nh n vào m t con tr ñã ñư c c p phát b nh hay m t con tr null, và size ch ñ nh kích thư c c a kh i nh m i. Hàm này s c p phát size byte b nh cho con tr . Nó có th ph i thay ñ i v v trí c a kh i nh ñ có th ñ ch cho kích thư c m i c a kh i nh , trong trư ng h p này n i dung hi n th i c a kh i nh ñư c copy t i v trí m i ñ ñ m b o d li u không b m t. Con tr m i tr t i kh i nh ñư c hàm tr v . N u không th thay ñ i kích thư c c a kh i nh thì hàm s tr v m t con tr null nhưng tham s pointer và n i dung c a nó s không b thay ñ i. Hàm free. Hàm này gi i phóng m t kh i nh ñ ng ñã ñư c c p phát b i malloc, calloc ho c realloc. void free (void * pointer); Hàm này ch ñư c dùng ñ gi i phóng b nh ñư c c p phát b i các hàm malloc, and realloc. calloc Trang 68
  6. Updatesofts.com Ebooks Team Các c u trúc Các c u trúc d li u. M t c u trúc d li u là m t t p h p c a nh ng ki u d li u khác nhau ñư c g p l i v i m t cái tên duy nh t. D ng th c c a nó như sau: struct model_name { type1 element1; type2 element2; type3 element3; . . } object_name; trong ñó model_name là tên c a m u ki u d li u và tham s tùy ch n object_name m t tên h p l cho ñ i tư ng. Bên trong c p ngo c nh n là tên các ph n t c a c u trúc và ki u c a chúng. N u ñ nh nghĩa c a c u trúc bao g m tham s model_name (tuỳ ch n), tham s này tr thành m t tên ki u h p l tương ñương v i c u trúc. Ví d : struct products { char name [30]; float price; }; products apple; products orange, melon; Chúng ta ñã ñ nh nghĩa c u trúc products v i hai trư ng: name và price, m i trư ng có m t ki u khác nhau. Chúng ta cũng ñã s d ng tên c a ki u c u trúc (products) ñ khai báo ba ñ i tư ng có ki u ñó : apple, orange và melon. Sau khi ñư c khai báo, products tr thành m t tên ki u h p l gi ng các ki u cơ b n như int, char hay short. Trư ng tuỳ ch n object_name có th n m cu i c a ph n khai báo c u trúc dùng ñ khai báo tr c ti p ñ i tư ng có ki u c u trúc. Ví d , ñ khai báo các ñ i tư ng apple, orange và melon như ñã làm ph n trư c chúng ta cũng có th làm theo cách sau: struct products { char name [30]; float price; } apple, orange, melon; Hơn n a, trong trư ng h p này tham s model_name tr thành tuỳ ch n. M c dù n u model_name không ñư c s d ng thì chúng ta s không th khai báo thêm các ñ i tư ng có ki u m u này. Trang 69
  7. Updatesofts.com Ebooks Team M t ñi u quan tr ng là c n phân bi t rõ ràng ñâu là ki u m u c u trúc, ñâu là ñ i tư ng c u trúc. N u dùng các thu t ng chúng ta ñã s d ng v i các bi n, ki u m u là tên ki u d li u còn ñ i tư ng là các bi n. Sau khi ñã khai báo ba ñ i tư ng có ki u là m t m u c u trúc xác ñ nh (apple, orange and melon) chúng ta có th thao tác v i các trư ng t o nên chúng. ð làm vi c này chúng ta s d ng m t d u ch m (.) chèn gi a tên ñ i tư ng và tên trư ng. Ví d , chúng ta có th thao tác v i b t kì ph n t nào c a c u trúc như là ñ i v i các bi n chu n : apple.name apple.price orange.name orange.price melon.name melon.price m i trư ng có ki u d li u tương ng: apple.name, orange.name và melon.name có ki u char[30], và apple.price, orange.price và melon.price có ki u float. Chúng ta t m bi t apples, oranges và melons ñ ñ n v i m t ví d v các b phim: Enter title: Alien // example about structures Enter year: 1979 #include #include My favourite movie is: #include 2001 A Space Odyssey (1968) And yours: struct movies_t { Alien (1979) char title [50]; int year; } mine, yours; void printmovie (movies_t movie); int main () { char buffer [50]; strcpy (mine.title, "2001 A Space Odyssey"); mine.year = 1968; cout
  8. Updatesofts.com Ebooks Team return 0; } void printmovie (movies_t movie) { cout
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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