Tuesday, April 14, 2015

Ứng dụng của Pointer - Tham chiếu

Tham chiếu tới variable (Trỏ vào một variable)

Sử dụng con trỏ để tham chiếu tới một variable được mô tả như hình 2.
Hình 2: Tham chiếu tới một variable thông qua Pointer

Biến val được khai báo tại ô nhớ 0xFE và có giá trị là 5, con trỏ ptr được khai báo tại ô nhớ 0x83 và có giá trị 0xFE.

Ta có thể thấy rằng pointer và variable được tổ chức giống nhau trên bộ nhớ (có một ô nhớ chứa giá trị và một đỉa chỉ truy xuất tới ô nhớ đó), chỉ khác là thay vì chứa giá trị sử dụng (val=5) như các variable thì Pointer chứa địa chỉ của một variable khác (ptr=0xFE).

Truy xuất địa chỉ của variable sử dụng ký tự &, ví dụ: &val
Truy xuất địa chỉ của giá trị tại ô nhớ mà pointer trỏ vào sử dụng ký tự *, ví dụ: *ptr

Thông qua pointer ta có thể truy xuất và gán giá trị cho variable như ví dụ sau:
       
#include "stdio.h"
int main()
{
    int var = 10;
    int *ptr;
    
    ptr = &var;
    printf("dia chi cua var = 0x%x \n\r",ptr);
    printf("gia tri cua var = %d \n\r",*ptr);
    
    *ptr = 100;
    printf("dia chi cua var = 0x%x \n\r",&var);
    printf("gia tri cua var = %d \n\r",var);
    return 0;
}
Kết quả in ra là
       
   dia chi cua var = 0x28ff18
   gia tri cua var = 10
   dia chi cua var = 0x28ff18
   gia tri cua var = 100

Quản lý mảng 

Bằng cách trỏ vào phần tử đầu tiên của mảng, một con trỏ hoàn toàn có thể truy xuất và gán giá trị cho các phần tử khác trong mảng nhanh chóng và linh hoạt.
Hình 1: Tham chiếu tới các phần tử của mảng thông qua Pointer
Trong ví dụ trên ta thấy con trỏ ptr được trỏ tới mảng array, khi đó muốn truy xuất giá trị một phần tử trong mảng array ta có thể thực hiện thông qua con trỏ,
VD:
Gán phần thử array[1] = 5 ta có thể thực hiện bằng cách *(++ptr)=5; như đoạn code sau
       
#include "stdio.h"
int main()
{
    int array[3] = {0};
    int *ptr;
    ptr=array;
    *(++ptr) = 5;
    printf("array[1] = %d",array[1]);
    return 0;
}

Kết quả in ra là array[1] = 5 , với cách làm tương tự bạn hoàn toàn có thể truy xuất và gán giá trị cho các phần tử khác của mảng array.

Kỹ thuật tham chiếu được sử dụng rất phổ biến trong xử lý mảng, nó giúp chương trình tối ưu và hiệu quả hơn.

No comments:

Post a Comment