[英]C declaration confusion
这两个参数声明和调用方法有什么区别(如果有的话)?
#1:
void MyFunction(MyStruct& msParam)
{
.....
}
MyStruct ms;
MyFunction(ms);
和#2:
void MyFunction(MyStruct* msParam)
{
.....
}
MyStruct ms;
MyFunction(&ms);
它们似乎都传递了一个指向变量“ms”的指针,所以我猜测它们在功能上是相同且同样有效的,但在某些情况下是首选的一种风格吗?
这样的 function 声明
void MyFunction(MyStruct& msParam) { ..... }
不是有效的 C 声明。
它可以是有效的 C++ function 声明,其中参数表示对 MyStruct 类型的 object 的引用。
本 function 声明
void MyFunction(MyStruct* msParam) { ..... }
是有效的 C 和 C++ function 声明,其中参数的指针类型指向 My8CFDE63311BD59EB66AC96 的 ZA8CFDE63311BD59B66AC9CF 类型的声明。
因此,要调用 function,您需要将运算符 & 应用于传递的 object 以获取指向 object 的指针。
MyStruct ms;
MyFunction(&ms);
所以功能也不一样。
第一个 function 处理 MyStruct 类型的MyStruct
而第二个 function 处理指针类型MyStruct *
。
void MyFunction(MyStruct& msParam)
{
.....
}
第一个声明用在 C++ 中,因为 C++ 是面向 Object 的。 所以代码 -
我的结构毫秒; 我的功能(毫秒);
请参阅 MyStruct object 的参考。
然而,
void MyFunction(MyStruct* msParam)
{.....}
我的结构毫秒;
我的函数(&ms);
可以在 C 和 C++ 中使用,因为这里我们将引用和异常指针传递给 MyStruct。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.