01/10/2018, 12:13

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

Trần Hoàn viết 14:29 ngày 01/10/2018

Có sự liên quan gì ở đây không?

Vinh viết 14:26 ngày 01/10/2018

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 ạ,

Trần Hoàn viết 14:24 ngày 01/10/2018

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.

Vinh viết 14:28 ngày 01/10/2018

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

Trần Hoàn viết 14:16 ngày 01/10/2018

Ai dạy bạn là vòng lặp truyền tham chiếu giá trị?

Vinh viết 14:26 ngày 01/10/2018

thế chỉ có hàm thôi à sư huynh

Vinh viết 14:18 ngày 01/10/2018

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ứ

Trần Hoàn viết 14:14 ngày 01/10/2018
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)

Bài liên quan
0