补充
void test1(int i)
{
i += 1;
}
void test2(int *j)
{
*j += 1;
}
void test3(int &k)
{
k += 1;
}
int main()
{
int a = 0, c = 0, *b, d = 10;
b = &d;
test1(a);
cout << "a=" << a << endl;
test2(b); //或者直接是test2(&d),这里是用b来代替&c
cout << "b=" << *b << endl;
test3(c);
cout << "c=" << c << endl;
return 0;
}
- 主要是test2和test3,对于test2函数,传入的必须是一个指针型的变量,函数里面的操作是对这个指针型变量指向的地址里面的数据进行加一操作,间接的修改了p指针指向的地址里面的数据;
- test3里面是一个引用,不能理解为获取了传入参数的地址,传入引用也就代表了,接下来在函数里面,k相当于传入变量的另外一个名字,我们就可以通过操作k也就同时操作了传入的变量c(也就是说这里的k与c都指向了空间中的同一个地址)
- 后两种都可以直接修改原变量的里面的数值,所以在使用的时候,如果是指针,则传入的必须是变量的地址(test2(&d)),如果是引用,则传入的直接是原来的变量,切勿也将地址传入,那样是错误的。
- 为了避免在使用的时候晕,同一个程序中,尽量选一个来使用,不要变来变去的,一会儿使用指针传递,一会儿又是用引用的方式传递参数。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。