PPLTCHUONG5 [Compatibility Mode]

27/12/2011111. Giới thiệu. CHƯƠNG TRỎ.(Pointers)Một con trỏ là 1 biến chứa một địa chỉ . Địa chỉ này là vị trí của một đối trong bộ nhớNếu một biến chứa địa chỉ của một biến khác,.biến thứ nhất được gọi là trỏ đến biến thứ . Toán tử con trỏ ()1. Giới nhớ Biến nhớ2Một biến được cấp phát tại địa chỉ 1000 có là địa chỉ (1003) của khác. Biến thứ gọi là con tử & là toán tử 1 ngôi, trả về địa chỉ của toán hạng của nó◦ Toán tử & dùng để gán địa chỉ của biến con pháp:.=&Bộ . Toán tử con trỏ ()2. Khai báo biến con trỏ. Cú pháp: type *pointerVariable;.type: xác định kiểu dữ liệu của biến trỏ trỏ đếnVí dụ:.int *a;.aVí dụ:.int a=25, x;.int *y;.x=a;.y=&a;a . Toán tử con trỏ (). 64. Các thao tác trên con trỏToán tử * : là toán tử một ngôi trả về giá địa chỉ con trỏ trỏ đếnCú pháp: *.Ví dụ: a=*p ;7Lệnh gán con thể dùng phép gán để gán giá trị của trỏ cho một con trỏ khác có cùng dụ:.int x;.int *p1, *p2;.p1 = &x;.p2 = p1;.Sau khi đọan lệnh trên được thực hiện, p1 và p2 cùng trỏ đến biến . Các thao tác trên con trỏ. 4. Các thao tác trên con trỏPhép toán số học trên con trỏVí dụ :.char *a;.short *b;.long *c;.Các con trỏ a, b, c lần lượt trỏ tới ô , 2000 và 3000Cộng các con trỏ với một số nguyên:.a = a + 1;//con trỏ a dời đi 1 = b + 1;//con trỏ b dời đi 2 = c + 1; //con trỏ c dời đi 4 byte◦ Chỉ có 2 phép toán sử dụng trên con trỏ cộng và trừ.◦ Khi cộng (+) hoặc trừ (-) 1 con trỏ với 1 N; kết quả trả về là 1 con trỏ. này chỉ đến vùng nhớ cách vùng nhớ trỏ hiện tại một số nguyên lần của kiểu dữ liệu của . Các thao tác trên con trỏ104. Các thao tác trên con trỏ. Lưu ý: cả hai toán tử tăng (++) và giảm (--).đều có quyền ưu tiên lớn hơn toán tử *.Ví dụ: *p++;.Lệnh *p++ tương đương với *(p++) : là tăng p (địa chỉ ô nhớ mà nó trỏ không phải là giá trị trỏ tới).. Các thao tác trên con trỏ4. Các thao tác trên con trỏVí dụ:#include .# main ().{.int a = 20, b = 15, *pa, *pb, temp;.pa = &a; // con trỏ pa chứa địa chỉ của = &b; // con trỏ pb chứa địa chỉ của = *pa;.// kết quả xuất ra.*pa = *pb;.*pb = temp;.màn << "a = " << a << endl; a = << “b = ” << b;.b = 20.}*p++ = *q++;. Cả hai toán tử tăng (++) đều được thực khi giá trị của *q được gán cho *p và cả q và p đều tăng lên 1. Lệnh này với:*p = *q;.p++;.q++;.13145. Cấp phát bộ nhớ động5. Cấp phát bộ nhớ độngCon trỏ cung cấp sự hổ trợ cho cấp phát động trong C/C++ Cấp phát động là phương tiện nhờ đó trình có thể dành được thêm bộ khi đang thực thi, giải phóng bộ nhớ cần thiết. C/C++ hổ trợ hai hệ thống cấp phát động:.một hệ thống được định nghĩa bởi C và định nghĩa bởi C++. 15Cấp phát động được định nghĩa bởi C.−Vùng nhớ Heap được sử dụng cho việc động các khối bộ nhớ trong thời thi chương trình. Gọi là bộ nhớ động−Hàm malloc() và free() dùng để cấp thu hồi bộ nhớ, trong thư viện . Cấp phát bộ nhớ động. 5. Cấp phát bộ nhớ độngHàm malloc(): cấp phát bộ nhớ động−Prototype của hàm có *malloc(length).− length: là số byte muốn cấp phát− Hàm malloc() trả về một con trỏ có , do đó có thể gán nó cho con trỏ bất kỳ−Sau khi cấp phát thành công, hàm malloc().trả về địa chỉ của byte đầu tiên của được cấp phát từ heap. Nếu công (không có đủ vùng nhớ rỗi ), hàm malloc() trả về null. Ví dụ:.char *p;.p = (char

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.