Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Con trỏ trỏ vào con trỏ

C++ cho phép sử dụng con trỏ đa tầng, nghĩa là con trỏ trỏ vào con trỏ. Để khai báo con trỏ loại này, chúng ta chỉ cần bổ sung thêm vào biến trỏ một toán tử * nữa.
char a; char *b;
char **c;
a = ‘z’;
b = &a;
c = &b;
Để minh họa điều này, chúng ta có thể tạo một địa chỉ ngẫu nhiên trong bộ nhớ cho mỗi biến, ví dụ là 7230, 8092 và 10502.
Giá trị của mỗi biến được viết trong mỗi ô. Dưới mỗi ô là địa chỉ tương ứng của ô đó trong bộ nhớ. Địa chỉ của biến a là 7230, giá trị của ô nhớ tương ứng là ‘z’. Biến *b trỏ vào địa chỉ của biến a và giá trị tương ứng của biến b ánh xạ đến giá trị của ô nhớ biến a – tức giá trị là ‘z’.  Biến c trỏ vào địa chỉ của b, nó sẽ ánh xạ gián tiếp đến giá trị của a – tức giá trị ‘z’.

Sự tương ứng giữa con trỏ trỏ vào con trỏ khác và mảng hai chiều
Việc khai báo biến **c như trên, có thể xem như là mảng hai chiều. Chúng ta lại xét bài toán ma trận.
Chương trình Kết quả
#include using namespace std;
int main()
{
//Khai báo ma trận
int **matrix;
//Khởi tạo ma trận
matrix = new int*[3];//dòng
for(int i=0; i<3; i++)//phần tử
matrix[i] = new int[3];
//Nhập ma trận
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
{
*(*(matrix+i)+j)=i+j;
}
//Xuất ma trận
for (int i=0; i<3; i++){
for (int j=0; j<3; j++)
cout<<*(*(matrix+i)+j)<<” “;
cout<
}
//Xóa ma trận
delete[] matrix;
return 0;
}
0 1 2 1 2 3
2 3 4
Bạn lưu ý, từ nay trở đi, khi xử lý bài toán trên mảng, bạn hoàn toàn có thể sử dụng con trỏ để xử lý. Chúng hoàn toàn tương đương nhau, chỉ có điều, đối với con trỏ, bạn có thể kiểm soát được bộ nhớ. Chúng ta sẽ tìm hiểu chi tiết về toán tử new trong chương tiếp theo.

No comments:

Post a Comment