#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.";
/*