<Tên biến>[<Vị trí>] tương đương với *(<Tên biến> + <Vị trí>)
&<Tên biến> [ <Vị trí> ] tương đương với (<Tên biến> + <Vị trí>)
Trong đó <Tên biến> là biến con trỏ, <Vị trí> là 1 biểu thức số nguyên.
VD:
int main(){
int *a;
int i;
clrscr();
a=(int*)malloc(sizeof(int)*10);
for(i=0;i<10;i++)
a[i] = 2*i;
printf("Truy cap theo kieu mang: ");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\nTruy cap theo kieu con tro: ");
for(i=0;i<10;i++)
printf("%d ",*(a+i));
getch();
return 0;
}
Khi đó kết quả in ra theo mảng và theo con trỏ là giống nhau.
a[i] sẽ giống *(a+i)
2. Cấp phát vùng nhớ
Trước khi sử dụng biến con trỏ, ta nên cấp phát vùng nhớ cho biến con trỏ này quản lý địa chỉ. Việc cấp phát được thực hiện nhờ các hàm malloc(), calloc() trong thư viện alloc.h.
Cú pháp các hàm:
void *malloc(size_t size): Cấp phát vùng nhớ có kích thước là size.
void *calloc(size_t nitems, size_t size): Cấp phát vùng nhớ có kích thước là nitems*size.
Trong C++ Còn Hàm NEW cấp phát
3. Cấp phát lại bộ nhớ
void *realloc(void *block, size_t size)
int a, *pa;
pa=(int*)malloc(sizeof(int)); /*Cấp phát vùng nhớ có kích thước 2 byte*/
pa = realloc(pa, 6); /* Cấp phát lại vùng nhớ có kích thước 6 byte*/
4. Giải phóng bộ nhớ
Cú pháp: void free(void *block) VD: free(pa);
C++ : delete(ss) cho hàm new