这些签名有什么区别?
T * f(T & identifier);
T & f(T & identifier);
T f(T & identifier);
void f(T * identifier);
void f(T & identifier);
void f(T identifier);
我在 c 中遇到了指针,但函数签名中的符号对我来说是新的。任何人都可以解释一下吗?
这些签名有什么区别?
T * f(T & identifier);
T & f(T & identifier);
T f(T & identifier);
void f(T * identifier);
void f(T & identifier);
void f(T identifier);
我在 c 中遇到了指针,但函数签名中的符号对我来说是新的。任何人都可以解释一下吗?
类型声明中的 & 符号表示引用类型。
int i = 4;
int& refi = i; // reference to i
int* ptri = &i; // pointer to i
refi = 6; // modifies original 'i', no explicit dereferencing necessary
*ptri = 6; // modifies through the pointer
引用与指针有许多相似之处,但如果不需要地址算术,它们更易于使用且不易出错。此外,与指针不同,引用不能在初始化后重新“指向”另一个对象。只需向谷歌询问 C++ 中的参考与指针即可。
T * f(T & identifier);
这是一个函数,它接受对 T 的引用并返回指向 T 的指针。
T & f(T & identifier);
这是一个函数,它接受对 T 的引用并返回对 T 的引用。
T f(T & identifier);
这个引用一个 T 并返回一个 T 的副本。
void f(T * identifier);
这个接受一个指向 T 的指针并且什么都不返回。
void f(T & identifier);
这个引用一个 T 并且什么都不返回。
void f(T identifier);
这个按值(副本)取一个 T 并且不返回任何内容。
引用的行为几乎与指针完全一样,只是永远不会将引用设置为 NULL,并且会为您隐式创建和取消引用,因此您无需在调用函数或在函数内部处理指针语法。