【发布时间】:2021-06-06 09:56:40
【问题描述】:
我最近有一个关于 C 结构的课程,讲师使用“通过引用传递”这个表达方式来描述将指向结构的指针传递给函数的操作。 我一直读到 C 没有“按引用传递”,因为与 Cpp 不同,按引用传递只能通过按值传递指向某个对象的指针来模拟——我们宁愿说“按指针传递”。所以我想知道结构的工作方式是否有所不同,并且这个表达式在这种情况下是合理的。
【问题讨论】:
-
指向对象的指针是“按值传递”的,所以你得到一个对对象的“引用”,传统上称为“按引用传递”。
-
他们可能口语化地使用了这个词。当然,按引用传递技术上 不是 C 中的概念,但是按指针传递在某种程度上基本上是对传递引用的模拟。您传递指针参数获取的变量的地址,因此它本质上是一个“引用”。
-
通过引用传递并不是 C++ 的特定术语。它只是意味着当你传递一个参数时,你实际上传递的是参数本身而不是副本。我确信除了 C++ 之外还有其他语言也可以通过引用传递(很确定 Pascal 也允许通过值和引用传递),甚至可能还有一些允许通过引用传递only。
-
这能回答你的问题吗? Passing by reference in C
标签: c struct pass-by-reference terminology pass-by-pointer