【发布时间】:2015-04-26 05:47:34
【问题描述】:
为什么什么都不做的函数会改变对象?
我有以下代码:
void sample(SList a)
{
cout << "\nIn Function";
a.print();
}
int main()
{
srand(500);
int total = 10;
SList llist;
for(int i = 0; i < total; i++)
{
llist.add_head(rand() % 100);
}
llist.print();
llist.print();
sample(llist);
llist.print();
return 0;
}
输出是:
70 69 14 3 18 71 70 17 57 98
70 69 14 3 18 71 70 17 57 98
In Function
70 69 14 3 18 71 70 17 57 98
0 34365728 34365696 34365664 34365632 34365600 34365568 34365536 34365504 34365472
我的问题是,与 SList 没有任何关系的函数 sample 正在更改 SList。它是如何做到的? SList 是一个单链表。
我认为这与按值传递有关。如果有人向我展示我无知地遗漏的观点,那就太好了。
编辑:标题问题的答案是肯定的。请看答案。
【问题讨论】:
标签: c++ pass-by-reference pass-by-value