Hỏi về tham trị và tham chiếu

chào các huynh ,n ở đây là để tham chiếu nên thiết nghĩ khi ra khỏi vòng lặp for nó sẽ trở về giá trị ban đầu chứ nhỉ,sao bằng 0 được các huynh

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.

#include <iostream>
void ahjhj(int n)
{
	n += 1;
}
void main()
{
	int n = 2;
	ahjhj(n);
	std::cout << n;//2
}

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.

1 Like

ý 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ứ

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 xp cùng trỏ tới 1 chỗ (*x*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)

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