gpt4 book ai didi

c++ - 一个什么都不做的函数可以改变一个对象吗?

转载 作者:行者123 更新时间:2023-11-28 02:28:00 26 4
gpt4 key购买 nike

<分区>

为什么什么都不做的函数会改变对象?

我有以下代码:

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 是一个单链表。

我认为这与按值传递有关。如果有人向我展示我无知地遗漏的观点,那就太好了。

编辑: 标题问题的答案是肯定的。请看答案。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com