基本的c ++指针问题

oka*_*ami 2 c++ pointers reference

如果我有这样的功能:

void doSomething(int& aVar)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)

我有这个:

int *aVar = new int;
*aVar = 10;

doSomething(*aVar);
Run Code Online (Sandbox Code Playgroud)

我为什么要打*aVar?是不是aVar已经是一个地址?

Ed *_* S. 8

不,引用不是指针.保证引用不为空; 你不能对指针说同样的话.将int传递给期望int的函数时,将自动引用.

PS不要把它想象成一个地址或花哨的指针.它是现有对象的引用或别名.

  • @Scott:仅仅因为它编译并运行并不意味着它有效.取消引用空指针时,会得到未定义的行为. (4认同)
  • 为了迂腐,我会说"......现有价值的别名",而不是对象. (2认同)