如果我有以下情况: -
struct foo
{
int a;
int *b;
} bar;
void baz(struct foo qux)
{
}
我是否认为传递bar
给baz()
会导致本地副本bar
被推入堆栈?如果是这样,这是什么副本?在 C++ 中,我假设它会调用复制构造函数或默认的复制构造函数,但我真的不知道这在 C 中是如何工作的。
C 是否有任何默认复制构造函数的概念,并且它有名称吗?可以做些什么来执行深层复制吗?(假设)。我能想到的唯一方法是实际进行深层复制,然后将其传递给函数。
通常,我会传递一个指向 a 的指针,foo
但我只是好奇它是如何工作的。此外,我的印象是传递指针更快,节省内存,并且是执行此类操作时推荐的操作过程。我猜这是一个浅拷贝;这可以改变吗?