c++中的引用和指针的区别和相关例子

来源:互联网 发布:手机淘宝开店不了 编辑:程序博客网 时间:2024/05/02 02:28


using namespace std;


//引用和指针的区别 c语言中没有引用的概念

//1 引用就是给变量起一个别名一个引用只能在定义的时候确定所引用的变量以后都不能改变所引用的变量

//  2  引用没有独立的存储空间跟被引用的变量共享存储空间

// 3 对引用所做的改变,就是对所引用变量所做的改变


//1 指针有独立的存储空间

//2 指针的值是可变的

//3 引用的值不能为空指针可以为空


//4 sizeof 引用所得到的是引用变量的大小 sizeof指针得到的是指针的大小


// 5 引用和指针的自增++自减运算含义不一样




//c++推荐能使用引用解决问题的就不要用指针

void my_swap(int &x,int &y)

{

   int temp=x;

    

    x=y;

    

    y=temp;

    

}


void my_swap1(int *x,int *y)

{

   int temp=*x;

    

    *x=*y;

    

    *y=temp;

    

}


int age=10;



int & test(){


   return age;

}




double widths[]={10.9,18.7};


double & setwidths(int i)

{

   return widths[i];

}

//下面的写法是错误的c++中不能对局部变量的引用

int & sum(int a,int b)

{

   int temp=a+b;

    

   return temp;

}


int main(int argc,const char * argv[]) {

    // insert code here...

    std::cout <<"Hello, World!\n";

    

    

    setwidths(1)=20;

    

   test() = 30;

    

   cout<<"年龄是"<<age<<endl;

    

    

    

  const int a=10;

//    int &af=a;这样写是错的

 const  int &af=a;

    

    

   double d=10.5;

    

//    const int &df=d;//等价于先把d的值存储到一个临时变量中然后在把这个临时变量复制给df所以是可以行的通的

//    

//    

//    cout<<&df<<","<<&d;

    

    

//    int &df=d;

    

   const double &df=d;

    

    d=30;

    

   cout<<df;

    

    

   int b=20;

   int c=10;

    

    my_swap(c,b);

    

    

   return 0;

}




void testRef2(){

   int a =10;

    

   int b=20;

    

   int &af  =a;

    

    

    af=b;//将变量b的值给了af也就给了a


   

    

    

    

    

}






void testRef()

{

    

   int a=10;

   //

   int  &af=a;

    

    //    af=90;

    

   int &bf=af;

    

   cout<<&af<<","<<&bf<<endl;

    

   cout<<a<<endl;

    

    

   cout<<&af<<","<<&a<<endl;


}

0 0