【问题标题】:User Defined Types Passing to a Function is a Call By Value in C?传递给函数的用户定义类型是 C 中的按值调用?
【发布时间】:2010-11-15 12:21:18
【问题描述】:

我有一个结构,我将这个结构传递给函数。 也许函数原型是:

typedef struct
{
    //Bla Bla
} ABC;

void func(ABC abc)
{

}

这个函数调用是值调用还是引用调用? 有人说“C 没有复制构造函数,所以我们不能传递带有值的用户定义类型”。 这个想法正确吗?

【问题讨论】:

    标签: c call usertype


    【解决方案1】:

    按值调用。 C 是总是按值调用。

    (C 没有复制构造函数,但是仍然可以通过创建第二个结构来复制结构,并将原始结构作为其初始化器。函数参数使用您作为参数传递的值进行初始化;它的工作机制相同。 )

    【讨论】:

    • 是的。如果你想传递一个指向结构的指针,你必须明确地这样做。
    • 谢谢,有一刻我怀疑我的 C 编程语言知识 :)
    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 2011-01-29
    • 2011-12-24
    • 2020-12-23
    • 2017-01-21
    • 2021-09-04
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多