nhân tiện cho e hỏi cái kết quả đoạn code này vs thật sự e ko hiêu
https://codeshare.io/5ZDQPd
ở print #1 thì p phải bằng địa chỉ của a chứ và *p phải bằng 4 chứ
void f(int *x) {
int a = 4;
x = &a;
cout << "dia chi cua a la: " << &a<<endl;
}
int *p = new int;
*p = 5;
f(p);
cout << p << " " << *p << endl; // Print #1
Hàm đó bạn truyền tham trị, bạn tác động đến x chứ đâu có tác động đến *x. Ban đầu x và p cùng trỏ tới 1 chỗ (*x và *p giống nhau), nhưng sau đó bạn thay đổi x, chỉ đơn giản là trỏ x đến chỗ khác, còn p không thay đổi. (Mình đoán vậy)
Có sự liên quan gì ở đây không?
huynh đài cho hỏi khi ra khỏi hàm hay vòng lặp hay cả hai thì biến tham trị trở về giá trị ban đầu vậy ạ,
Cái này mới gọi là ra khỏi hàm thì quay trở lại giá trị ban đầu.
Còn bạn đưa ra một cái code chạy đúng và hỏi không liên quan thì mình cũng không biết trả lời ra làm sao.
ý mình là khi ra khỏi vòng lặp kia biến tmp vẫn =0 ấy, tưởng nó về giá trị ban đầu chứ
Ai dạy bạn là vòng lặp truyền tham chiếu giá trị?
thế chỉ có hàm thôi à sư huynh
nhân tiện cho e hỏi cái kết quả đoạn code này vs thật sự e ko hiêu
https://codeshare.io/5ZDQPd
ở print #1 thì p phải bằng địa chỉ của a chứ và *p phải bằng 4 chứ
Hàm đó bạn truyền tham trị, bạn tác động đến
x
chứ đâu có tác động đến*x
. Ban đầux
vàp
cùng trỏ tới 1 chỗ (*x
và*p
giống nhau), nhưng sau đó bạn thay đổix
, chỉ đơn giản là trỏx
đến chỗ khác, cònp
không thay đổi. (Mình đoán vậy)