C/C++ 指针、引用——小白理解

  1. 指针是什么?作用是什么?引入指针的目的是什么?
    先从故事说起…你有个家喻户晓的名字叫李华,在华华小区,你有个朋友,她有个独一无二的名字叫普普。你想去找她春游,那么你怎么找她呢?你可以在小区里找一个叫普普的人,也可以通过她家的门牌号001(即地址)找她。那么通过“普普”这个名字和“门牌号”都可以帮你找到朋友。放在C++中,“普普”就相当于int a 中的a,a即为变量的变量名;而“门牌号”就是int *p中的p,p即为变量的地址,因此即可以通过变量名也可以通过变量的地址访问变量。
    注意!指针也是一种变量(因此也称指针变量),因此在int *p 中,*p不是指针,p才是指针(因为变量名只能由字母,数字以及下划线组成,因此p是int *型)。指针的用途便是保存地址,因此也可以认为指针就是地址。
    那么为什么引入指针呢,指针有什么好处呢?你还叫李华,你有一本窄窄电话簿,一页只能记8位数的电话,神奇!。这本珍贵的电话簿里面记满了你朋友的电话,但有些是8位的座机,有写是11位的手机号码,前两位朋友是普普(座机)和小米(手机号码),那么普普的电话只需要占一页(第一页),小米的只要占两页(第二、三页)。你家非常有钱,所以你又买了一本小本本,记录了朋友们的电话在所在的页数。因为座机号和手机号码有着非常明显的区别,所以小米的手机号码只需要记录02,普普只需要记录01。你看,通过页数记录,不管朋友的电话的长度,页数所占的长度是一样。放在C++中,不同类型变量的长度可能不一样,所以占用的内存不同,但他们的地址(指针)长度都是一样的,所占的内存是一样的。例如int a,需要占用的长度为4个字节,1000-1003,地址即为1000;double b,需要占用8个字节,1004-1011,地址为1004,那么保存地址所占的字节是一样的,均是4位。
  2. 区别
    int a=1; int *p=&a,若a的地址为1000;则a为1,*p为1,&a为1000,&p为指针变量的地址。实际上,p等价于a,此处的号具有取数据或者改数据的含义,但是注意int *p是完全不同的东西,它是一种标志,标志着所定义的变量是指针变量。
  3. 内联函数
    常规函数调用:若多次调用常规函数,程序运行时是在main函数与常规函数之间反复横跳,因此减慢了运行速度,增加了运行时间。
    内联函数调用:若多次调用内联函数,程序运行时是在main函数调用内联函数处复制内联函数,因此增大了内存,但减少了运行时间。
    注意:需要在函数声明、定义处增加inline
    4.引用
    参数传递三种方法:
    (1)按值传递:单项传递,不可修改实参;
    (2)按地址传递:可修改实参,针对数组等
    (3)按引用传递:可修改实参,针对结构较大的数据对象

PS:如有不当之处,请予指正,谢谢啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值