C++【01】

  • 某个变量的引用,等价于这个变量,相当于这个变量的别名。   变量名 & 引用名=某变量名;

                定义引用时一定要将其初始化成引用某个变量。引用只能引用变量,不能引用常量和表达式。  

                初始化后,它就一直引用该变量,不会再引用别的变量了。

double a=4,b=5;
double &r1=a;//r1引用a
double &r2=r1;//r2也引用a
r2=10;
cout<<a<<endl;//输出10
r1=b;        //r1并没有引用b,只是对r1的赋值
cout<<a<<endl;//输出5

case1:使用C++交换两个变量的值与使用C语言实现两个变量值的交换

        形式参数:在定义函数名和函数体的时候使用的参数,目的是用于接收调用该函数时传递的参数。实现主调函数与被调函数之间的联系。

        实际参数:在调用时传递该函数的参数。可以时常量、变量、表达式。

//C语言
void swap(int a,int b)
{
    int temp;
    a=temp;
    temp=b;
    b=a;
}

int n1,n2;
swap(n1,n2);//a,b是形式参数,n1,n2是实参。形参的修改不会对实参造成影响!!
//所以以上述方式调用swap函数并不会使n1,n2的值交换

-----------------------正确的C语言交换形式-----------------------
void swap(int* a,int* b)
{
    int temp;
    temp=*b;
    *b=*a;
    *a=temp;
}

int n1,n2;
swap(&n1,&n2);

--在C语言中参数传递分为按值传递和按地址传递。
--按值传递不能改变实参。实参是变量、表达式等数值。因为函数调用时,实参和形参存在于内存中两块不同区域,实参先自己复制一份拷贝,再将拷贝传给形参。由于传递的是拷贝,所以实参不会受形参的影响,实参的值不会被改变。
--按地址传递可以改变实参。实参是指针。函数调用时,将指针传入,此时形参和实参的指针都一样,对形参的任何操作等于对实参的操作。实参的值能够被改变。


//C++
void swap(int& a,int& b){
    int temp;
    temp=a;
    a=b;
    b=temp;
}

int n1,n2;
swap(n1,n2);//实现了n1,n1的值的交换


--在C++中用引用代替指针的按值传递以及按地址传递。
--const引用传递(不能改变实参),类比C的按值传递,但由于引用是不用拷贝实参,效率更高。const决定了不能改变实参
--按引用传递(可以改变实参),类别C的按地址传递,可以改变实参。



------实际应用:(1)f(int X)   ---C语言用法,实参是变量、数值,就不变;实参是指针就可以改变
               (2)f(int& X ) ---C++用法,实参可以被改变
               (3)f(const int& X)---C++用法,实参不被改变

        不能通过常引用去修改其引用的变量的值!

int n=100;
const int& r=n;
r=12;//编译出错
n=19;//正确

       令T是一种类型名

        const T &和 T &是不同的类型!!

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值