Như đã giải thích trong chương chính, con trỏ C là một địa chỉ, mà là một giá trị số. Vì thế, bạn có thể thực hiện các hoạt động số học trên một con trỏ như khi bạn thực hiện với giá trị số. Có 4 toán tử số học mà có thể được sử dụng trên các con trỏ: ++, --, +, và -.

Để hiểu con trỏ đại số, chúng ta giả sử rằng contro là một con trỏ integer mà trỏ tới 1000 địa chỉ. Giả sử số integer là 32 bit, chúng ta thực hiện thao tác đại số trên con trỏ này:

contro++

Bây giờ, sau thao tác trên, contro sẽ trỏ tới vị trí 1004 bởi vì mỗi lần contro được tăng thêm một, nó sẽ trỏ tới vị trí integer kế tiếp mà là 4 byte kế tiếp vị trí hiện tại. Thao tác này sẽ di chuyển con trỏ tới vị trí bộ nhớ tiếp theo mà không ảnh hưởng tới giá trị thực sự tại vị trí bộ nhớ. Nếu contro trỏ tới một ký tự mà địa chỉ của nó là 1000, thì khi đó thao tác trên sẽ trỏ tới vị trí 1001 bởi vì ký tự tới sẽ ở vị trí 1001.

Tăng một Con trỏ trong C

Chúng ta ưa thích sử dụng một con trỏ trong chương trình thay vì sử dụng một mảng bởi vì con trỏ biến có thể tăng, không giống như tên mảng, không thể tăng được, bởi vì nó là một con trỏ hằng số. Chương trình sau tăng con trỏ biến để truy cập tới mỗi phần tử của mảng:

#include <stdio.h>

const int KICHCO = 3;

int main ()
{
   int  mang[] = {15, 150, 1500};
   int  i, *contro;

   /* chung ta co dia chi mang trong con tro */
   contro = mang;
   for ( i = 0; i < KICHCO; i++)
   {

      printf("Dia chi cua mang[%d] = %x\n", i, contro );
      printf("Gia tri cua mang[%d] = %d\n", i, *contro );

      /* Di chuyen toi vi tri ke tiep */
      contro++;
   }
   printf("\n===========================\n");
   printf("Hoclaptrinh chuc cac ban hoc tot! \n");
   return 0;
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Con trỏ số học trong C

Viết câu trả lời

Drop Images

0 Bình luận