© Le Trung Thang Nov - 2010
Chú ý:
Một con trỏ (hay biến nói chung) luôn phải có kiểu và giá trị (hay nội dung) gắn liền với nó. Ở qui tắc đầu tiên trong 4 qui tắc trên, ta chỉ nói đến kiểu của A. Về giá trị, thì cách tính giữa mảng A và con trỏ thông thường sẽ khác nhau:
- Nếu A là c/trỏ thông thường cấp n (n >=2 ), thì giá trị của *A sẽ là giá trị các ô nhớ (thường là 4byte) mà A trỏ tới.
- Nếu A là mảng cấp n (n >=2 ), thì giá trị của *A sẽ là địa chỉ của những ô nhớ mà A trỏ tới. (như ví dụ trên).
Xem ví dụ 1 sau:
The best tools for embedded system:
Một con trỏ (hay biến nói chung) luôn phải có kiểu và giá trị (hay nội dung) gắn liền với nó. Ở qui tắc đầu tiên trong 4 qui tắc trên, ta chỉ nói đến kiểu của A. Về giá trị, thì cách tính giữa mảng A và con trỏ thông thường sẽ khác nhau:
- Nếu A là c/trỏ thông thường cấp n (n >=2 ), thì giá trị của *A sẽ là giá trị các ô nhớ (thường là 4byte) mà A trỏ tới.
- Nếu A là mảng cấp n (n >=2 ), thì giá trị của *A sẽ là địa chỉ của những ô nhớ mà A trỏ tới. (như ví dụ trên).
Xem ví dụ 1 sau:
int main() // ví dụ 1
{
int* a ;
int* b ;
int **pointer ; // pointer tro toi kieu int, *pointer tro toi kieu char.
// Tuy vậy,ko hề tồn tại biến nào là *pointer cả, đây chỉ là cách nói hình thức,
// trong bộ nhớ chỉ có biến pointer.
int Array[3][3] = {// col 1 2 3
{0,1,2},//row 1
{3,4,5},//row 2
{6,7,8},//row 3
};
pointer = (int**)Array;//ve syntax thi pointer va Array khac kieu, nen phai ép kiểu.
a = pointer[1]; // pointer tăng mỗi lần 4 byte, vì pointer trỏ tới kiểu dữ liệu
//4 byte (int), còn *pointer trỏ tới kiểu dữ liệu 1 byte (char).
// Để ý là: pointer[1] = (*(pointer+1))
b = *(Array+1) ; // = Array[1]
printf("Pointer 2D: a = %d, b = %d, &Array = %d, &Array[0] = %d, &Array[1] = %d,&Array[1][0]=%d\n", a,b,Array,&Array[0],Array[1],&Array[1][0]);
getchar();
return 0; // Để ý sự khác nhau giữa *(Array+1) và *(pointer+1)
}Output: Pointer 2D: a = 1, b = 2293532, & Array = 2293520, &Array[0] = 2293520, & Array[1] = 2293532, &Array[1][0]=2293532
The best tools for embedded system:
No comments:
Post a Comment