char a; char *b; char **c; a = ‘z’; b = &a; c = &b; |
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 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 |
No comments:
Post a Comment