Kỹ thuật lập trình slide bài giảng 02

50 663 6
Kỹ thuật lập trình  slide bài giảng 02

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương II Vài kiến thức nâng cao C, C+ + http://www.2shared.com/file/DuW 4uJI0/KTLT_ch.html Thứ tự ưu tiên phép toán Datatype *p P+n => noi dung cua p = noidungcua p + n* sizeof(p) A=b=c=d=10 A=b=c=d+1; 2.1 Mảng • Là dãy hữu hạn phần tử liên tiếp có kiểu tên • Có thể hay nhiều chiều, C không giới hạn số chiều mảng • Khai báo theo syntax sau : DataType ArrayName [size]; Or DataType ArrayName [Size1][Size2] [Sizen]; • Khởi tạo giá trị cho mảng theo cách – C1.Khi khai báo : float y[5]={3.2,1.2,4.5,6.0,3.6} int m[6][2] = {{1,1},{1,2},{2,1},{2,2},{3,1},{3,2}}; char s1[6] ={‘H’,’a’,’n’,’o’,’i’,’\0’}; hoac char s1[6] = “Hanoi”; char s1[] =“Dai hoc Bach Khoa Hanoi”; L=24 int   m [][] ={{1,2,3},{4,5,6}}; – C2 Khai báo gán giá trị cho phần tử mảng Ví dụ : int m[4]; m[0] = 1; m[1] = 2; m[2] = 3; m[3] = 4; 2.2 Con trỏ • Khái niệm : Giá trị biến lưu trữ nhớ MT, truy cập tới giá trị qua tên biến, đồng thời qua địa chúng nhớ • Con trỏ thực chất biến mà nội dung địa đối tượng khác ( Biến, hàm, số) • Có nhiều kiểu biến với kích thước khác nhau, nên có nhiều kiểu trỏ Con trỏ int để trỏ tới biến hay hàm kiểu int • Việc sử dụng trỏ cho phép ta truy nhập tới đối tượng gián tiếp qua địa • Trong C, trỏ công cụ mạnh, linh hoạt • Khai báo trỏ : • Syntax : dataType * PointerName; Chỉ trỏ • Sau khai báo, ta trỏ NULL, chưa trỏ tới đối tượng • Để sử dụng trỏ, ta dùng toán tử lấy địa & PointerName = & VarName Ví dụ : int a; int *p; a=10; p= &a; • Để lấy nội dung biến trỏ trỏ tới, ta dùng toán tử lấy nội dung * • * PointerName Ví dụ : int i,j, *p; i= 5; j= *p; Gán i=5 100 gán p = & i j 104 p i 102 j 104 p 100 i 102 100 gán J = *p p= & i; *p= j+2; 100 i *p = j+2 102 j 104 100 p 102 i j 104 100 p 100 i 102 j 104 100 p Chú ý • Một trỏ trỏ tới đối tượng kiểu • Toán tử * & có độ ưu tiên cao toán tử số học • Ta viết *p cho moi nơi có đối tượng mà trỏ tới xuất int x = 5, *p; p = & x; => x=x+10; ~ *p = *p+10; • Ta gán nọi dung trỏ cho : hai trỏ trỏ tới đối tượng int x=10, *p, *q; p = &x; q = p; Các phép toán trỏ • Một biến trỏ cộng trừ với số nguyên n kết trỏ kiểu, địa trỏ tới đối tượng khác nằm cách đối tượng bị trỏ n phần tử • Phép trừ trỏ cho ta khoảng cách ( số phần tử ) trỏ • Không có phép cộng, nhân, chia trỏ • Có thể dùng phép gán, so sánh trỏ, cần ý đến tương thích kiểu Ví dụ : char *pchar; short *pshort; long *plong; ⇒ sau xác lập địa cho trỏ, : pchar ++; pshort ++; plong ++; địa ban đầu tương ứng trỏ 100, 200 300, kết ta có giá trị tương ứng : 101, 202 304 tương ứng Hàm với tham số ngầm định • • • • Một đặc tính bật C++ khả định nghĩa giá trị tham số mặc định cho cáchàm Bình thường gọi hàm, cần gởi giá trị cho tham số định nghĩa hàm đó, vd : void MyDelay(long Loops) { for(int I = 0; I < Loops; ++I) ; } Mỗi hàm MyDelay() gọi phải gởi cho giá trị cho tham số Loops Tuy nhiên,trong nhiều trường hợp nhận thấy luôn gọi hàm MyDelay() với giá trị Loops ? void MyDelay(long Loops = 1000) { for(int I = 0; I < Loops; ++I) ; } MyDelay(); // Loops có giá trị 1000 MyDelay(5000); // Loops có giá trị 5000 Chú ý: • Nếu có prototype, tham số có giá trị mặc định cho prototype hàm không lặp lại định nghĩa hàm (Vì trình biên dịch dùng thông tin prototype định nghĩa hàm để tạo lệnh gọi) • Một hàm có nhiều tham số có giá trị mặc định Các tham số có giá trị mặc định cần phải nhóm lại vào tham số cuối (hoặc nhất) hàm Khi gọi hàm có nhiều tham số có giá trị mặc định, bỏ bớt tham số theo thứ tự từ phải sang trái phải bỏ liên tiếp nhau, • chẳng hạn có đoạn chương trình sau: • int MyFunc(int a= 1, int b , int c = 3, int d = 4); //prototype sai!!! • int MyFunc(int a, int b = , int c = 3, int d = 4); //prototype Phép đa hóa (Overloading) • Với ngôn ngữ C++, đa hóa hàm toán tử (operator) Đa hóa phương pháp cung cấp nhiều định nghĩa cho tên hàm cho phạm vi Trình biên dịch lựa chọn phiên thích hợp hàm hay toán tử dựa tham số mà gọi Đa hóa hàm (Functions overloading) • Trong c ta phai dùng hàm để tính trị tuyệt đối : int abs(int i); long labs(long l); double fabs(double d); • C++ cho phép tạo hàm khác có tên int abs(int i); long abs(long l); double abs(double d); #include #include int MyAbs(int X) { return abs(X); } long MyAbs(long X) { return labs(X); } double MyAbs(double X) { return fabs(X); } int main() { int X = -7; long Y = 200000l; double Z = -35.678; cout[...]... bộ nhớ cần thiết để làm việc, và phải trả giá bằng việc khai báo dự trữ quá lớn • Nhiều đối tượng có kích thước thay đổi linh hoạt • Việc dùng bộ nhớ động cho phép xác định bộ nhớ cần thiết trong quá trình thực hiện của CT, đồng thời giải phóng chúng khi không còn cần đến để dùng bộ nhớ cho việc khác • Trong C ta dùng các hàm malloc, calloc, realloc và free để xin cấp phát, tái cấp phát và giải phóng... không có dữ liệu trả về C cũng không có khái niệm hàm con, tất cả các hàm kể cả hàm chính (main) đều có cùng một cấp duy nhất (cấu trúc hàm đồng cấp) Một hàm có thể gọi một hàm khác bất kì của chương trình • syntax : [] ([]) { } Hàm và truyền tham số cont • Trong C, tên hàm phải là duy nhất, lời gọi hàm phải có các đối số đúng bằng và hợp tương ứng ... j= *p; Gán i=5 100 gán p = & i j 104 p i 102 j 104 p 100 i 102 100 gán J = *p p= & i; *p= j+2; 100 i *p = j+2 102 j 104 100 p 102 i j 104 100 p 100 i 102 j 104 100 p Chú ý • Một trỏ trỏ tới đối... *pshort; long *plong; ⇒ sau xác lập địa cho trỏ, : pchar ++; pshort ++; plong ++; địa ban đầu tương ứng trỏ 100, 200 300, kết ta có giá trị tương ứng : 101, 202 304 tương ứng • Nếu viết tiếp... đối tượng có kích thước thay đổi linh hoạt • Việc dùng nhớ động cho phép xác định nhớ cần thiết trình thực CT, đồng thời giải phóng chúng không cần đến để dùng nhớ cho việc khác • Trong C ta dùng

Ngày đăng: 25/04/2016, 22:25

Mục lục

  • Thứ tự ưu tiên các phép toán

  • Các phép toán trên con trỏ

  • Con trỏ và mảng

  • Mảng các con trỏ

  • Con trỏ trỏ tới con trỏ

  • 2.3 Bộ nhớ động – Dynamic memory

  • Xin cấp phát bộ nhớ : new va delete

  • Giải phóng bộ nhớ

  • Dùng bộ nhớ động cho mảng

  • CT cộng hai ma trận với mỗi ma trận được cấp phát động

  • Hàm và truyền tham số

  • Dùng tham chiếu với c++

  • Hàm với tham số ngầm định

  • Phép đa năng hóa (Overloading)

  • Đa năng hóa các hàm (Functions overloading)

  • Đa năng hoá toán tử

  • Các giới hạn của đa năng hóa toán tử:

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan