天天看点

引用变量

       引用是已经定义的变量的别名,使用引用变量主要是用于函数的形参,这样函数将使用原始数据,而不是使用其拷贝。

      声明中:char* 指向char的指针 int& 指向int的引用

      int a=101;

      int& b=a;

      int* p=&a;

其中,表达式a、b和*p可以互换,表达式&a、&b和p可以互换,他们是等价的。

1.指针可以先声明,再赋值,但是引用必须在声明时将其初始化,如:int& b; b=a;(invalid)

2.引用必须在创建时初始化,一旦与某个变量关联,将不能再改变。int& b=a;与 int* const p=&a;中,b与*p所承担的角色是等价的。

3. void swapr(int &a,int &b);  //按引用传递,使用原始数据

    void swapp(int* p,int* q);  //按指针传递,使用原始数据

    void swapv(int a,int b);  //按值传递,使用原始数据的拷贝

所以,如果想让函数使用通过引用传递的信息,但又不想修改这些数据信息,应该使用常量引用。如:

double cube(const double &r);

4.将引用用于结构只须声明结构参数时使用操作符&即可,通常需将返回的引用声明为const,应当不返回函数终止时不再存在的内存单元引用,(也不应该使用返回指向临时变量的指针)所以,需要返回一个作为参数传递给函数的引用。

struct name

{

    char name0[50];

    int age;

}

const name& writeName(name& p)

    ……

const name& 不是说结构name本身是const,而是说不能使用返回的引用来修改它指向的结构,如:

writeName(Marry).name0=Peter;  (invalid,但是,如果去掉const后,则是允许这样表示的)

继续阅读