Vì sao không thể sortedInsert Stack

Code của em thế này, nhưng không hiểu sao sau khi apply hàm vào thì stack nó lại empty vậy. Mọi người xem và góp ý giúp em, em cảm ơn.

void sortInsert(stack<int> st, int x)
{
	if ((st.empty()==1) || (x > st.top()))
	{
		st.push(x);
		return;
	}
	int temp = st.top();
	st.pop();
	sortInsert(st, x);
	st.push(temp);	
}
int main()
{
	stack<int> st;
	sortInsert(st, 5);

	
	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	return 0;
}

Chẳng những là hàm trên, em còn phát hiện ra bất kỳ hàm nào em viết theo cách trên đều không thể chạy được.


Nhưng hàm khai báo thế này thì nó có thể chạy được:


Tại sao vậy?

merged to the #1 post by noname00

Truyền tham chiếu bạn ơi.
Bạn đang truyền tham trị nên các tham số của hàm là bản sao, bạn đang chỉnh sửa bản sao thôi.
Bạn học đến đây chắc cũng học qua Tham trị, Tham chiếu và Con trỏ rồi nhỉ.

3 Likes

Nó biết mình, chứ mình không biết nó, chúng mình có thể tìm hiểu thêm, nhưng cảm ơn bạn đã gợi ý cho mình <3

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