C++基础(引用和函数的高级算法)

2016-11-07  本文已影响0人  I踏雪寻梅

C++基础

引用和函数的高级算法

课程目标

引用

#include <iostream>
int main(int argc,char *argv[])
{
    int intone=5;
    int &rint=intone;
    int inttwo=6;
    rin t=inttwo;
    std::cout<<"intone="<<intone<<std::endl;
    std::cout<<"rint="<<rint<<std::endl;
    rint=10;
    std::cout<<"intone="<<intone<<std::endl;
    std::cout<<"rint="<<rint<<std::endl;
    std::cout<<"&intone="<<&intone<<std::endl;
    std::cout<<"&rint="<<&rint<<std::endl;
}
  int*a:
  int*&P=a://表示int*的引用P初始化为a
  int b=8;
  P=&b://0k,P是a的别名,是一个指针
const double&rr=1;
- 先做必要的类型转换
- 将结果至于临时变量
- 将临时变量的地址作为初始的值
#include <iostream>
using namespace std;
void swap(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}
int main()
{
    int x=10,y=20;
    swap(x,y);
    cout<<"x="<<x<<endl;
    cout<<"y="<<y<<endl;
}
#include <iostream>
int &test()
{
    int temp=12;
    return temp;
}
int main()
{
    int &x=test();
    std::cout<<"x="<<x<<std::endl;
}
- temp的生命周期仅局限于&test函数的},结果会被释放。
- 函数会报警告,但是最后的结果也可以显示12,因为系统内部产生一个临时变量,存储temp值。
- 用static int temp就不会出现警告。
int a=5,b=6;
swap(a,b);//会不清楚到底是引用还是传参。
#include<iostream>
using namespace std;
double& fn(const double& pd) //const作为参数                   
{
    static double ad=3;
    ad+=pd;
    cout<<"fn being called..the value is:"<<pd<<endl;
    return ad;
}
int main()
{
    double a=3.6;
    double& pa=fn(a);
    cout <<pa <<endl;
    a=5.4;
    pa = fn(a);
    cout <<pa <<endl;
    return 0;
}
//6.6  12
上一篇 下一篇

猜你喜欢

热点阅读