第二章变量中复合类型以及学习心得感受

1、C++中有很多的符合类型:我们这里讲到了常用的两种 “ 引用 和 指针 ”

   引用的定义:为对象起了另外一个名字,引用类型引用另外一种类型。因为引用本身不是一个对象,所以不能定义引用的引用。允许在一条语句中定义多个引用,其中每个引用表示符都必须以符号&开头。
   例子:int ival=1024;
             int &refVal=ival;      //refVal指向ival(是ival的另一个名字)
             int &refVal2;           //报错:引用必须被初始化

2、指针与引用之间的区别

 其一:指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。
 其二:指针无须在定义时赋初值。和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。 
 例子:int *ip1, *ip2 ;// ip1 和 ip2 都是指向int型对象的指针。
       double dp, *dp2;// dp2 是指向 double 型对象的指针,dp是 double 型对象。   

3、关键概念

              像&和*这样的符号,既能用作表达式里的运算符,也能作为声明的一部分出现,符号的上下文决定了符号的意义:
              int i =42;
              int &r = i;  //&符号紧随类型名出现,它是声明的一部分,r是一个引用。
              int *p;     //*符号紧随类型名出现,它是声明的一部分,p是一个指针。
              p = &i;    //&符号出现在表达式之中,是一个取地址符号。
              *p = i;    //*符号出现在表达式之中,是一个解引用符。
              int &r2=*p;//&是声明的一部分,*是一个解引用符。

4、空指针

           (1)概念:空指针不指向任何对象。
           (2)生成空指针的方法:
                     (a)int *p1=nullptr;    //等价于int *p1=0;
                     (b)int p2=0;             //直接将p2初始化为字面常量;
                     (c)#include cstdlib
                                int *p3=NULL;      //等价于int *p3=0;
               注意(1)得到空指针最直接的办法就是字面值nullptr来初始化指针。
                   (2)另一种办法就是如对p2的定义一样,也可以通过指针初始化为字面值0来生成指针。
                注意:记住赋值永远改变的是等号左侧的对象。

5、合法指针

两个类型相同的合法指针,可以用等号操作符(==)或者不相等操作符(!=)来比较他们,比较的结果是布尔型。如果两个指针存放的地址值相同,则他们相等;反之他们不等。需要注意的是:两个指针存放的地址相同(两个指针相等)有三种可能:他们都为空、都指向同一个对象、或者都指向了同一对象的下一地址。有时候一个指针指向某对象,同时另一指针指向另外对象的下一地址,此时也可能出现两个地址相同的情况,即指针相等。

6、void*指针

void*是一种特殊的指针类型,可用于存放任意对象的地址。

7、假设p是一个int型指针,请说明下述代码含义。

  if(p)//......          p指针是否为空指针
  if(*p)//......         p指针所指向的对象是否为0

8、下面这段代码中为什么p合法lp非法?

 int i=42;  void *p=&i;  long *lp=&i;
 因为:lp的类型不是int,而void定义了一个空指针,可以存放任意类型的对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值