C++的常量、指针、引用

一、C语言的常量是可以通过地址进行修改的;而C++的常量是不可修改的,且在定义的时候必须初始化!

  可引用常量的地址,但只是临时地址:

  const int a = 10 ;

  int *b = (int*)&a ; //开辟临时地址给a,实际并不能访问a的地址,它在符号表中,不可修改

  宏是在预编译阶段(预处理)处理的,而常量是在编译阶段处理的。而且宏没有作用域的说法,从它定义的位置开始到代码结束都可以使用该宏常量。

  

二、C++中引用相当于给变量取别名,且定义引用变量时必须初始化:

  int a = 10;

  int *p = &a; //此处&表示取a地址赋给指针p

  int &re = a; //此处&表示引用类型的变量,re就是a的别名,可以对re赋值达到修改a的目的

  int &re2 = re; //可以对引用再次引用,其实re2本质也是a别名

三、通过指针和引用两种方式改变变量的值(如下图)

  有变量a,如果函数的参数为指针int *p,那么传参时应该传的是地址&a;

  如果函数的参数为引用int &r,那么传参时应该直接传a;

  为什么把函数参数类型改为int b,就是实现不了对a的值的修改呢?因为此时传进去的a为形参,作用域只在函数内部,与实际a的地址并不一样,所以不能实现对a值的修改。

  

四、指针、引用作为函数参数

  如果需要传进的参数是一个结构体之类的变量,数据会很多,此时直接传参会存在值拷贝的动作,如果使用指针或引用就可以避免,如下图:

  用指针时,取结构体属性(成员)使用'->'符号;

  用引用时,取结构体属性(成员)使用'.'符号。

  

  

猜你喜欢

转载自www.cnblogs.com/zzx1905/p/Pointer_And_Reference.html