Can you help me?简单的c++问题!!!在线等!!!

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:05:40
#include<iostream>
using namespace std;
void swap1(int a,int b);
void swap2(int &a,int &b);
void swap3(int *a,int *b);
void main()
{
int x,y;
cout<<"测试传值参数,请输入两个数:";
cin>>x>>y;
swap1(x,y);
cout<<"传值参数测试结果是:"<<x<<" "<<y<<endl<<endl;
cout<<"测试引用参数,请输入两个数:";
cin>>x>>y;
swap2(x,y);
cout<<"引用参数的测试结果为:"<<x<<" "<<y<<endl<<endl;
cout<<"测试指针参数,请输入两个整数:";
cin>>x>>y;
swap3(&x,&y);
cout<<"指针参数测试结果是:"<<x<<" "<<y<<endl<<endl;
}
void swap1(int a, int b)
{
int temp;
temp=a;a=b;b=temp;
}
void swap2(int &a,int &b)
{
int temp;
temp=a;a=b;b=temp;
}
void swap3(int *a,int *b)
{

用比较形象的话说.

假设有两张纸A,B和一支笔,纸代表内存,笔可以进行内存读写.
首先在两张纸上分别写了"百度"和"google",

1,对于swap1,相当于在再找来两张纸C,D,先在C,D上分别写上"百度"和"google",然后把C的"百度"擦掉,写成"google",再把D的"google",擦掉,写成"百度".当然这时A,B两张纸还是原来的"百度"和"google".

2,对于swap2,相当于将A纸取多一个名字C,B纸取多一个名字D,然后把C的"百度"擦掉,写成"google",再把D的"google",擦掉,写成"百度".当然这时A,B两张纸的"百度"和"google"就交换了.

3,对于swap3,相当于告诉笔:"百度"写在A纸上,"google"写在B纸上,也就是说"百度"和"google"的容身之处笔已经知道了.然后笔在"百度"的家(A纸)写上"google",又在原来那个"google"的家(B纸)写上"百度".当然这时A,B两张纸的"百度"和"google"就交换了.

传值:只不过将值提供给函数使用,与提供者本身没有任何牵连。
指针:指针就是地址,传指针就是传变量地址,对指针内容的改变就是对变量的改变,因为一个变量对应一个地址。
引用:引用可以理解为别名,可传指针一样,都是地址操作。就像你有两个名字a和b,a本科毕业其实就是b本科毕业。

一般使用引用时用上const修饰符,因为传别名不用像传值一样拷贝一份变量,在变量不是单纯的一个数值而是结构体或者类时尤为有用,con