如何在C ++中获取通过引用传递的值的值

时间:2009-11-04 09:54:26

标签: c++ pass-by-reference

我有一个带有以下声明的函数:

void cleanValid(int valid[][4], int &size, int index);

在执行此函数时,我需要设置另一个计数器,该计数器等于引用传递的整数大小。我尝试过这样的事情:

int count;
count = size;

如果我没记错的话,当我更改count的值时,它也会改变size的值。我不能发生这种情况。我如何将大小的值复制到计数中并使它们保持独立?

3 个答案:

答案 0 :(得分:12)

不,你错了。当您从引用中读取非引用变量时,您不会在两者之间建立任何类型的链接。那时你将拥有size值的独立副本,没有别的。

如果想要影响size的值,则必须使用对它的引用:

int& count = size;

/* ... */    
count= 32;  /* This will change size, too. */

答案 1 :(得分:3)

如果您不想更改size,为什么不通过值/ const引用?

void cleanValid(int valid[][4], int size, int index);

void cleanValid(int valid[][4], const int &size, int index);

在两个选项中,确保 size不会更改 - 让编译器处理它。

答案 2 :(得分:2)

int count = size 大小的值复制到计数中。如果您在修改副本时更改计数,则大小将不受影响。