30/09/2018, 21:25

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.

Phạm Minh Anh Hữu viết 23:28 ngày 30/09/2018

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.
}
Sơn viết 23:42 ngày 30/09/2018

Em cảm ơn anh ạ .

Tom Nguyen viết 23:32 ngày 30/09/2018

void func(int *pointer)

Đấ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)

Phạm Minh Anh Hữu viết 23:35 ngày 30/09/2018

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

Tao Không Ngu. viết 23:28 ngày 30/09/2018

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

Bài liên quan
0