c++签名、指示
这些签名有什么区别?
T * f(T & identifier);
T & f(T & identifier);
T f(T & identifier);
void f(T * 标识符);
void f(T & 标识符);
void f(T 标识符);
I met pointers in c, but the amperstand in function signature is new for me. Can Anyone explain this?what's the difference between these signatures?
T * f(T & identifier);
T & f(T & identifier);
T f(T & identifier);
void f(T * identifier);
void f(T & identifier);
void f(T identifier);
I met pointers in c, but the amperstand in function signature is new for me. Can Anyone explain this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
类型声明中的 & 符号表示引用类型。
引用与指针有许多相似之处,但如果不需要地址运算,它们更易于使用并且不易出错。此外,与指针不同,引用在初始化后不能重新“指向”另一个对象。只需向 google 询问 C++ 中的引用与指针即可。
An ampersand in a type declaration indicates a reference type.
References have many similarities with pointers, but they're easier to use and less error-prone if address arithmetic is not needed. Also, unlike pointers, references can't be rebound to 'point' to another object after their initialization. Just ask google for references vs. pointers in C++.
T * f(T & 标识符);
这是一个函数,它接受 T 的引用并返回指向 T 的指针
。 f(T & 标识符);
这是一个函数,它接受对 T 的引用并返回对 T 的引用。
T f(T &identifier);
该函数获取 T 的引用并返回 T 的副本。
void f(T * 标识符);
这个函数接受一个指向 T 的指针并且不返回任何内容。
void f(T & 标识符);
这个引用了 T 且不返回任何内容。
void f(T 标识符);
这个按值获取 T(副本)并且不返回任何内容。
引用的行为几乎与指针完全相同,只是引用永远不会被设置为 NULL,并且会为您隐式创建和取消引用引用,因此您无需在调用函数时或在函数内部处理指针语法。
T * f(T & identifier);
This is a function which takes a reference to T and returns a pointer to T.
T & f(T & identifier);
This is a function which takes a reference to T and returns a reference to T.
T f(T & identifier);
This one takes a reference to a T and returns a copy of a T.
void f(T * identifier);
This one takes a pointer to a T and returns nothing.
void f(T & identifier);
This one takes a reference to a T and returns nothing.
void f(T identifier);
This one takes a T by value (copies) and returns nothing.
References behave almost exactly like pointers except a reference is never going to be set to NULL, and a reference is implicitly created and dereferenced for you so you don't need to deal with pointer syntax while calling the function or inside the function.