Hỏi về tham số là con trỏ

Ví dụ em có 1 biến con trỏ int *ptrong hàm main:

int main()
{
        int a;
        int *p=&a;
}

và 1 hàm:

void func(int *pointer)
{
      pointer=1 địa chỉ khác;
}

Thì khi em truyền p vào hàm func(): func§ thì giá trị của biến con trỏ p có bị thay đổi không, hay chỉ có giá trị của tham số pointer trong hàm func thôi?
Em xin cảm ơn.

Cách truyền như thế này giống như truyền biến bình thường vậy, nó chỉ lấy bản sao của con trỏ p thôi vì vậy không thay đổi được địa chỉ mà nó trỏ đến. Có thể test bằng đoạn code dưới. Bạn sẽ thấy chúng như nhau.

void func(int *pointer, int test)
{
      pointer=&test;
}
int main()
{
        int a;
        int *p=&a;
        cout << p << endl; //Trước khi gọi hàm.
        func(p, 7);
        cout << p << endl; //Sau khi gọi hàm.
}
2 Likes

Em cảm ơn anh ạ :grinning:.

1 Like

Đấy là truyền giá trị có kiểu là pointer thôi. Thử cái này sẽ thấy khác biệt:

void func(int *&pointer)

nếu như thế này thì phải đổi tên file lại là .cpp rồi, k để .c được :grinning:

1 Like

This post was flagged by the community and is temporarily hidden.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?