Multiple indirection là gì?

Noun C
chain of pointer

Một con trỏ (pointer) được sử dụng để trỏ đến vị trí bộ nhớ (memory location) của một biến (variable). Một con trỏ lưu trữ địa chỉ của một biến. Ngôn ngữ C cho phép con trỏ trỏ trỏ đến một con trỏ khác. Điều này tạo ra nhiều lớp con trỏ và do đó được gọi là multiple indirection.

Một con trỏ trỏ đến tới một con trỏ khác có khai báo (declaration) tương tự như một con trỏ bình thường nhưng có thêm dấu hoa thị trước chúng. Điều này cho biết độ sâu của con trỏ. Bạn có thể thấy trong ví dụ bên dưới, chúng ta đã khai báo một biến số nguyên mà chúng ta khởi tạo là 100. Câu lệnh int ** pt tạo một con trỏ trỏ đến một con trỏ và con trỏ trỏ đến một biến kiểu dữ liệu int. Chúng ta đã truyền giá trị của i cho con trỏ pt2 và để truyền giá trị của pt2 cho pt1, chúng ta đã sử dụng câu lệnh pt1 = &pt2;.


#include 
#include 
void main() {
  int i =100;
  int **pt1;
  int *pt2;
  clrscr();
  pt2 = &i;
  pt1 = &pt2;
  printf("The value of **pt1 = %d \n "+
  "The value of *pt2 = %d", **pt1, *pt2);
  getch();
}

Learning English Everyday