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

CHƯƠNG 2:NHỮNG MỞ RỘNG CỦA C+

Chia sẻ: Muay Thai | Ngày: | Loại File: PDF | Số trang:32

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

CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C 1.1 Định nghĩa hàm Trong định nghĩa hàm ANSI C cho phép hai kiểu khai báo dòng tiêu đề của hàm, trong khi đó C++ chỉ chấp nhận một cách /* C++ không khai báo kiểu này */ double ham(a,b) int a; double b ; /* Cả C và C++ cho phép*/ double ham(int a, double b) int a; double b; 1.2 Khai báo hàm nguyên mẫu Tronc C chỉ cần khai báo tên hàm và giá trị trả về, không cần danh sách kiểu của các tham số C++ khai báo hàm nguyên...

Chủ đề:
Lưu

Nội dung Text: CHƯƠNG 2:NHỮNG MỞ RỘNG CỦA C+

  1. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ Giới thiệu những điểm khác biệt chủ yếu giữa C và C++ Các điểm mới của C++ so với C
  2. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 1. CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C 1.1 Định nghĩa hàm Trong định nghĩa hàm ANSI C cho phép hai kiểu khai báo dòng tiêu đề của hàm, trong khi đó C++ chỉ chấp nhận một cách /* C++ không khai báo kiểu này */ /* Cả C và C++ cho phép*/ double ham(a,b) double ham(int a, double b) int a; int a; double b ; double b;
  3. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 1. CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C 1.2 Khai báo hàm nguyên mẫu Tronc C chỉ cần khai báo tên hàm và giá trị trả về, không cần danh sách kiểu - của các tham số C++ khai báo hàm nguyên mẫu - Với C++ một lời gọi hàm chỉ được chấp nhận khi trình biên dịch biết được kiểu của các tham số, kiểu của giá trị trả về
  4. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 1. CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C 1.2 Khai báo hàm nguyên mẫu Chuyển kiểu tự động theo nguyên tắc sau: char -> int ->longint -> float ->double Ví dụ: double ham(int , double) /* khai báo hàm ham*/ …. main() { int n; char c; double x, x1, x2,x3; x1=ham(n,x); /* không có chuyển đổi kiểu*/ x2=ham(c,x); /* có chuyển đổi kiểu từ char->int*/ x3=ham(x,n); /* có chuyển đổi kiểu từ double ->int và từ int thành double */ ….
  5. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 1. CÁC ĐIỂM KHÔNG TƯƠNG THÍCH GIỮA C++ VÀ ANSI C 1.3 Sự tương thích giữa con trỏ void và các con trỏ khác Trong ANSI C, kiểu void tương thích với các kiểu con trỏ khác cả hai chiều Ví dụ: void *g; int *i; Phép gán sau là hợp lệ g=i ; i=g ; Trong C++ chỉ có chuyển đổi kiểu ngầm định từ một kiểu con trỏ tùy ý thành void*, còn ngược lại phải thực hiện chuyển đổi kiểu tường minh. Ví dụ: g=i; i=(int*)g;
  6. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ Trong tệp tiêu đề isotream.h người ta định nghĩa hai đối tượng cout và cin tương ứng với hai thiết bị chuẩn ra vào được sử dụng cùng với >. Thường thì ta hiểu cout là màn hình còn cin là bàn phím 2.1 Ghi dữ liệu ra thiết bị chuẩn cout Ví dụ 1 : #include main() { cout
  7. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ 2.1 Ghi dữ liệu ra thiết bị chuẩn cout Sử dụng cout và
  8. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ 2.1 Các khả năng viết ra trên cout Có thể sử dụng toán tử (void*)
  9. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ 2.1 Các khả năng viết ra trên cout Ví dụ: cout
  10. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ 2.2 Đọc dữ liệu từ thiết bị chuẩn cin Ví dụ 1: int n; cin>>n; Ví dụ 2: int n ; float p ; char c ; cin>>c>>n>>p ; Dùng toán từ >> để nhập dữ liệu cho các kiểu char, int, float, double và char*
  11. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ 2.2 Đọc dữ liệu từ thiết bị chuẩn cin Giống với hàm scanf(), cin tuân theo một số qui ước dùng trong việc phân tích các ký tự  Các giá trị số được phân cách bởi : SPACE, TAB, CR, LF. Khi gặp một ký tự không hợp lệ như dấu “.” đối với số nguyên, chữ cái đối với số, ... sẽ kết thúc việc đọc cin, ký tự không hợp lệ này sẽ được xem xét trong lần đọc sau  Đối với gía trị xâu ký tự, dấu phân cách cũng là SPACE, TAB, CR còn đối với gía trị ký tự, dấu phân cách là dấu CR. Trong hai trường hợp này không có khái niệm “ký tự không hợp lệ”. Mã sinh ra do nhấn phím Enter của lần nhập trước vẫn được xét trong lần nhập chuỗi hay ký tự tiếp theo và do đó sẽ có nguy cơ không nhập được đúng giá trị mong muốn khi đưa ra lệnh nhập xâu lý tự hoặc ký tự ngay sau các lệnh nhập cá giá trị khác. Giải pháp khắc phục ta dùng một trong hai lệnh sau fflush(stdin) ; // khai báo trong stdio.h cin.clear(); // hàm thành phần của lớp cin
  12. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 2. CÁC KHẢ NĂNG RA VÀO MỚI CỦA C++ 2.2 Đọc dữ liệu từ thiết bị chuẩn cin Ví dụ : #include void main() { int n; float x; char t[81] ; do { cout >n>>t>>x ; cout
  13. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 3. NHỮNG TIỆN ÍCH CHO NGƯỜI LẬP TRÌNH 3.1 Ghi chú thích cuối dòng C++ dùng // để chỉ ra một dòng là chú thích Ví dụ cout
  14. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 3. NHỮNG TIỆN ÍCH CHO NGƯỜI LẬP TRÌNH 3.1 Toán tử phạm vi :: Ví dụ 1: Ví dụ 2: int a=5 ; #include main() int a ; { main() int a=10 ; { int a=10; // a cục bộ cout
  15. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 4. HÀM INLINE Trong C++ ta có thể định nghĩa các hàm được thay thế trực tiếp thành mã lệnh máy tại chổ gọi (inline) mỗi lần được tham chiếu. Ưu điểm của hàm inline là chúng không đòi hỏi các thủ tục bổ sung khi gọi hàm và trả về giá trị. Do vậy, hàm inline được thực hiện nhanh hơn so với các hàm thông thường
  16. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 4. HÀM INLINE Ví Ví dụ : getch(); #include } // định nghĩa hàm inline #include inline inline long tong(int a[]); // khai báo inline long tong(int a[]) hàm hàm inline { void main() int i; { long s=0; int i; for (i=0;i
  17. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 5. THAM CHIẾU Ngôn ngữ C++ giới thiệu một khái niệm mới là tham chiếu ”reference”. Một tham chiếu có thể là một biến, tham số hình thức của hàm hay dùng làm giá trị trả về của một hàm. 5.1 Tham chiếu tới một biến Ví dụ: int n ; int &p=n ; //p là một biến tham chiếu, p tham chiếu tới vùng nhớ nơi n lưu trữ Nếu viết: n=7; cout
  18. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 5. THAM CHIẾU 5.1 Tham chiếu tới một biến Tham chiếu và con trỏ giống nhau vì cùng chỉ đến các đối tượng có địa chỉ, cùng được cập phát địa chỉ khi khai báo. Nhưng cách sử dụng thì khác nhau. Khi nói tới tham chiếu ta phải gán nó với một biến nào đó đã khai báo, trong khi con trỏ thì không nhất thiết phải khởi tạo giá trị cho nó. Con trỏ có thể tham chiếu tới nhiều biến khác nhau con biến tham chiếu chỉ chỉ có thể tham chiếu tới một biến duy nhất lúc khởi tạo nó. Ví dụ : p=&m ; // cho p chỉ tới m int &q=n ; // // khai báo biến tham int n=3, m=4 ; chiếu chiếu q chỉ đến n int *p ; q=4 ; // gán cho n giá trị là 4 p=&n ; // p chỉ tới n p=&n .... *p=4 ; q=m ; // // gán m cho biến n ..... .....
  19. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 5. THAM CHIẾU 5.1 Tham chiếu tới một biến Ví dụ : Ví dụ : int &p=3; // không hợp lệ #include const int &p=3; // hợp lệ void main() { int int x=3,&y; // sẽ báo lỗi vì y chưa được được khởi tạo ….. }
  20. CHƯƠNG 2: NHỮNG MỞ RỘNG CỦA C++ 5. THAM CHIẾU 5.2 Truyền tham số cho hàm bằng tham chiếu Ví dụ : void swap2(int *x,int *y) { #include int temp=*x; #include *x=*y; /* hàm được gọi theo truyền tham trị*/ *y=temp; void swap1(int x, int y) { } /*hàm /*hàm thực hiện việc truyền tham số int temp =x; bằng bằng tham chiếu */ x=y; void swap3(int &x,int &y) { y=temp; int temp=x; } x=y; /* /* hàm thực hiện việc truyền tham số bằng bằng con trỏ */ y=temp; }
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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