Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Phép toán số học với Con trỏ (Pointer Arithmetic) trong C


Con trỏ lưu địa chỉ biến khác.

Khai báo & Khởi tạo

int qty = 175;
int *p = &qty; // p trỏ đến qty

Các phép toán hợp lệ

  • *p1 + *p2, *p1 - *p2, *p1 * *p2, *p1 / *p2 – toán học trên giá trị.
  • p1 + 4, p2 - 2 – con trỏ +/- số nguyên (nhảy theo scale factor).
  • p1 - p2 – số phần tử giữa 2 con trỏ (cùng mảng).
  • p1++, --p2 – tăng/giảm con trỏ.
  • sum += *p2 – cộng giá trị.
  • So sánh: p1 > p2, p1 == p2, p1 != p2 – so sánh địa chỉ.

Các phép toán KHÔNG hợp lệ

  • p1 + p2, p1 * p2, p1 / p2, p1 / 3

Chương trình minh họa

#include <stdio.h>
int main() {
    int a = 12, b = 4;
    int *p1 = &a, *p2 = &b;
    int x = *p1 * *p2 - 6;  // 12*4-6 = 42
    int y = 4 - *p2 / *p1 + 10; // 4 - 4/12 + 10 = 14 (integer division)
    printf("Dia chi a = %p\n", (void*)p1);
    printf("Dia chi b = %p\n", (void*)p2);
    printf("a=%d b=%d\n", a, b);
    printf("x=%d y=%d\n", x, y);
    return 0;
}

Kết quả

Dia chi a = 0x7ffc...
Dia chi b = 0x7ffc...
a=12 b=4
x=42 y=14