简单参数传递问题,初学者别砸太狠啊!!!
#include <iostream.h>
void increment(int* &i)
{
i++;
}
void main()
{
int*i=0;
cout < <i < <endl;
increment(i);
cout < <i < <endl;
}
为什么increment(int* &i)参数形式是 (int* &i) 而(int &i)却不行呢?
高手指点下,谢了
[解决办法]
int* & i 指向int*类型的引用
int & i 指向int类型的引用
前面i定义是int*类型,不是int类型
[解决办法]
那个函数的意思是将参数i本身加1,参数是一个指针的引用,对i的操作会影响i的值。
如果换成int &i;那么外部调用的时候,需要将指针本身转换为整数类型(不管是强制转换还是隐式转换);转换过程可能会生成一个临时变量,如果这样的话,就起不到引用的作用了。
#include <iostream.h>
void increment(int &i)
{
i++;
}
void main()
{
int*i=0;
cout < <i < <endl;
int b = (int)i;
increment(b);
i=(int*)(b);
cout < <i < <endl;
}
这样也是可以的,同样达到目的,但是一般能不要转换最好不要转换。