前言
在主函数实现了解传递的本质。
提示:以下是本篇文章正文内容,下面案例可供参考
一、值传递
在主函数中#include <iostream>
using namespace std;
void main()
{
int i=10;
int j=i;
j=20;
cout<<"i="<<i<<endl;
cout<<"j="<<j<<endl;
system("pause");
}
输出结果为:
因为在int j=i 时,这是一个开辟一个新内存,然后将i中的值复制到j中的过程。所以,j中的值改变不会引起i中的值的改变。
#include <iostream>
using namespace std;
void test(int j)
{
j=20;
cout<<"j="<<j<<endl;
}
void main()
{
int i=10;
test(i);
cout<<"i="<<i<<endl;
system("pause");
}
二、地址传递
代码如下:
#include <iostream>
using namespace std;
void main()
{
int i=10;
int *j=&i;
*j=20;
cout<<"i="<<i<<endl;
cout<<"j="<<*j<<endl;
system("pause");
}
输出结果为:
因为在 int *j=&i 时,这是一个开辟一个新内存,然后将i的地址的值传入到j中的过程。所以,*j =20就是访问j中地址(就是i的地址),将20赋值于其中,改变值(等于i=20)。
#include <iostream>
using namespace std;
void test(int *j)
{
*j=20;
cout<<"j="<<*j<<endl;
}
void main()
{
int i=10;
test(&i);
cout<<"i="<<i<<endl;
system("pause");
}
三、引用传递
代码如下:
#include <iostream>
using namespace std;
void main()
{
int i=10;
int &j=i;
j=20;
cout<<"i="<<i<<endl;
cout<<"j="<<j<<endl;
system("pause");
}
输出结果为:
因为在 int &j=i 时,这是将i 重命名为 j ,改变 j 的值等同改变 i 的值。
#include <iostream>
using namespace std;
void test(int &j)
{
j=20;
cout<<"j="<<j<<endl;
}
void main()
{
int i=10;
test(i);
cout<<"i="<<i<<endl;
system("pause");
}
总结
三种传递就是不一样的赋值结果,值传递,地址传递,引用传递分别为,j 复制 i 值,j 存入 i 的地址 ,i 重命名为 j 。