使用带引号的参数的函数和指针时会发生什么?

时间:2013-08-16 01:25:06

标签: c++ pointers reference

对函数的引用相当混乱。您可以将一个作为参数放入函数定义中,然后在以后使用它时为参数添加非引用非指针值。然后我想到了这个:

int foo (int& bar)
{
    //Code
}

//More code...

int* a = &b;
c = foo (a);

会发生什么? foo使用a,b还是什么?我如何强制使用?

2 个答案:

答案 0 :(得分:2)

你为什么不亲自测试一下?无论什么时候有疑问,请尝试编译它!

它无效有意义 - foo()要求的参数类型为int& - 引用int,但你是试图传递指针。你会得到的错误就像是

cannot convert parameter 1 from 'int *' to 'int &'

关于你的问题

  

如何强行使用?

您的函数目前可以修改传递给它的任何int值,因为它接受reference作为参数。

如果希望您的函数能够修改其参数,请将其签名更改为:

int foo (int bar)

或将参数更改为对const int

的引用

int foo (const int& bar)

答案 1 :(得分:0)

  

如何强行使用?

不会产生编译错误。如果想要了解引用和指针之间的差异,请通过this链接。