Title Image

Blog Logo

🌱 Các phép toán với Pointer trong C++

🌱 Các phép toán với Pointer trong C++

Pointer Arithmetic - Các phép toán với con trỏ là một khái niệm quan trọng trong ngôn ngữ lập trình để làm việc với con trỏ.

    Khi làm việc với con trỏ, chúng ta có thể thực hiện các phép tính toán như cộng, trừ, nhân hoặc chia để thay đổi địa chỉ mà con trỏ đang trỏ đến. Trong bài viết này, chúng ta sẽ tìm hiểu về Pointer Arithmetic và xem xét một số ví dụ cụ thể.

    👉 Cộng và trừ giá trị từ con trỏ

    Khi chúng ta cộng hoặc trừ một số nguyên n vào một con trỏ, địa chỉ của con trỏ sẽ thay đổi tương ứng với kích thước của kiểu dữ liệu được trỏ tới nhân với giá trị của số nguyên. Ví dụ:

#include <iostream>
using namespace std;

int main()
{
    int *ptr;
    int num = 10;
    ptr = &num;

    ptr = ptr + 1;
    cout << "Address of num: " << ptr << endl;
    cout << "Address + 1: " << ptr + 1 << endl;
    cout << "Address - 1: " << ptr - 1 << endl;
}

    Run This Code    

    ➥ Các bạn có thể bấm "Run This Code", kết quả hiển thị trên màn hình console như sau.

Address of num: 0x7ffe0b5c68c0
Address + 1: 0x7ffe0b5c68c4
Address - 1: 0x7ffe0b5c68bc

    Dễ thấy, giá trị ptr+1 được in ra lớn hơn 4 đơn vị so với giá trị ptr, và ptr-1 kém 4 đơn vị so với ptr. Dễ thấy, ptr là một con trỏ, chứa địa chỉ của một số nguyên num, kiểu dữ liệu là int. Vì vậy, biến num có kích thước là 4 byte, nên khi ptr tăng lên 1, nó sẽ trỏ đến số nguyên tiếp theo đứng cạnh num trên bộ nhớ, tức là tăng 4 đơn vị.

cpp-pointer-arithmetic
Phép cộng trừ với Pointer
    
    Tương tự, đối với pointer chứa địa chỉ các biến char (1 byte), thì con trỏ khi +1/-1 sẽ chỉ tăng giảm 1 đơn vị.

    👉 Truy cập phần tử của mảng thông qua con trỏ

    Pointer Arithmetic cũng cho phép chúng ta truy cập từng phần tử trong mảng thông qua con trỏ bằng cách sử dụng phép cộng. Ví dụ:

#include <iostream>
using namespace std;

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr; // Gán con trỏ bằng địa chỉ đầu tiên của mảng

    // Truy cập phần tử của mảng thông qua con trỏ
    for(int i = 0; i < 5; i++)
    {
        cout << "Value of element " << i << " = " << *(ptr + i) << endl;
    }

    return 0;
}

    Run This Code    

    Ở đây, chúng ta khai báo một mảng arr chứa các phần tử nguyên và một con trỏ ptr. Chúng ta gán ptr bằng địa chỉ đầu tiên của mảng arr. Trong vòng lặp, chúng ta sử dụng con trỏ để truy cập và in ra giá trị của từng phần tử trong mảng. 

    👉 Kết luận

    Pointer Arithmetic là một khái niệm quan trọng trong ngôn ngữ lập trình C/C++. Việc hiểu và sử dụng điều này sẽ giúp chúng ta làm việc hiệu quả với con trỏ và tăng hiệu suất của chương trình.

    Lưu ý rằng trong ngôn ngữ C++, việc sử dụng con trỏ trong Pointer Arithmetic tương đương với C, tuy nhiên syntax có thể hơi khác nhau.

    Hy vọng rằng bài viết này đã cung cấp những thông tin hữu ích và ví dụ cho bạn. Chúc bạn thành công trong việc học và ứng dụng Pointer Arithmetic vào công việc của mình.

>>>= Follow ngay =<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

                                        

Đăng nhận xét

0 Nhận xét