为函数提供要使用的原始变量时,有什么更好的做法:
unsigned long x = 4;
void func1(unsigned long& val) {
val = 5;
}
func1(x);
或者:
void func2(unsigned long* val) {
*val = 5;
}
func2(&x);
IOW:有什么理由选择一个而不是另一个吗?
原文由 Jack Reza 发布,翻译遵循 CC BY-SA 4.0 许可协议
指针
BaseType* ptrBaseType;
BaseType objBaseType;
ptrBaseType = &objBaseType;
& 是一个一元运算符,它返回其操作数的内存地址。
解引用运算符 (*) 用于访问存储在指针指向的变量中的值。
int nVar = 7;
int* ptrVar = &nVar;
int nVar2 = *ptrVar;
参考
引用 (&) 类似于现有变量的别名。
引用 (&) 类似于自动取消引用的常量指针。
它通常用于函数参数列表和函数返回值。
引用必须在创建时进行初始化。
一旦一个引用被初始化为一个对象,就不能改变它来引用另一个对象。
您不能有 NULL 引用。
一个 const 引用可以引用一个 const int。它是使用具有 const 值的临时变量完成的
int i = 3; //integer declaration
int * pi = &i; //pi points to the integer i
int& ri = i; //ri is refers to integer i – creation of reference and initialization
原文由 Saurabh Raoot 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我的经验法则是:
如果您想对指针进行指针运算(例如,递增指针地址以逐步遍历数组)或者您必须传递一个 NULL 指针,请使用指针。
否则使用参考。