C++基本功:从一个左右值问题出发,侃侃C++的引用[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 redstar81 的 blog

#include <iostream.h>
#include ,stdio.h>
/*--------------------比较的程式1:正常的含有函数的程序----------à
int a[3]={1,2,3};
int function(int index);
int main()
{
int a;
a=function(2);
cout<<a<<endl;
return 0;
}

int function(int index)
{
return a[index];----->返回值
}
*/----------------------------------------------------------------------------
--->


/*------------------比较的程式2-------------------------------------------à

int a[3]={1,2,3};
int main()
{
int b=a[2];-------------->右算子,赋出值
cout<<b<<endl;

a[2]=4;   --------------->左算子,被赋值
cout<<a[2]<<endl;
    return 0;
}
*///-------->a[i]作为左算子和右算子所表示的意思不同
//----------------------------------------------------------------------------
---à


/*-----------------------比较的程式3----------------------------------------à

int i;
int a[3]={1,2,3};
int &function(int index);
int main()
{


    function(2)=9;//--------->可被赋值了
cout<</*a[2]*/i<<endl;
return 0;
}

int &function(int index)
{
// return a[index];
    return i;
}/*----------------------------------------------------------------------à


*///----------->利用引用实现通过函数的返回类型的变化.
//--------- -->为什么说:return a[index]返回的应是整形值
//------------>用了引用后明显变了
//------------>不用引用怎样实现上述的效果呢.
//-------- --->即怎样使返回的相当左算子
//------------>怎样理解引用的作用和意义.
你是否感觉:&在几个用法中没有一致的性质可循.
下面我们就来探讨和总结一下:

/*usecase*/ by redstar81
#include <iostream>
#include <stdio.h>

using namespace std;

void main(void)
{
    //测试引用是否可以赋以常量.
    /*
       int &a =100; //wrong
    */
   
    //考察引用和指针的使用区别
    /*  
        int a = 100;
           int *ptr;
           ptr = &a;
   cout<<*ptr<<endl;
          getchar();
   */
   
   //测试对引用取址返回的结果
   /*
         int a =100;
         int &b = a;
         cout<<b<<endl;
         cout<<&b<<endl;
         int &c = b;
         cout<<c<<endl;
         getchar();
        
   */
  
   //测试是否可以重新赋值
   /*
         int a = 100;
         int b = 200;
         int &c = a;
         cout<<a<<endl<<b<<endl<<c<<endl;
         c = b;
         cout<<c<<endl;
        
         getchar();
   */
   
    //说明引用的一种错误用法..........
    /*
         int a = 100;
         int &b = &a;
         cout<<a<<endl<<b<<endl;
         getchar();
    */
   
    /*
        char* str = "i am programming.";
        char*& rpchar = str;
        cout<<str<<endl<<rpchar<<endl;
        getchar();
    */
   
    //测试引用和指针混合的情况...
        typedef char* pchar;
        typedef char& rchar;
        typedef pchar& rpchar;
       
        pchar str = "i am programming.";
       
        /*

本文关键:C++、引用
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top