C++复习整理---指针、函数、const相关

指针int *p

p:p指向的地址
*p:p指向的地址上的值
&p:存放指针p的地址

const

const int *p	
int const *p

这两个相同的
指向整型常量的指针,指向的位置的值不能改变,可以改指针本身。理解成先const int或int const,再*为指针。
就可以让这个指针指向有另一个值的另一个位置。
如果想要在同一个位置改值,就可以先让另一个指针指向这个位置,然后再从另一个指针改值。
比如:

int *u = (int*)p;//得有(int*),不然会提示是const int* 不能赋值给int*
*u = ...

int * const p
指向整型的常量指针,指向的地址不能改变,理解成先int*,再对p const
指针本身指向的地址不能变,但是可以改变指向的地址上存的值

在函数传参时对引用加const,只能是int const &p或者const int &p。

函数传参

传值:
是把实参的值赋给形参,形参上值的改变就不影响实参。
函数参数压栈的是参数的副本值,没有作用在原来的变量上。

传地址:
传递的是地址,形参和实参都指向同一个地址空间。所以如果在函数里改这个地址空间上的值,函数外也是会变的。但是如果要改的是形参指向的这个地址空间,是不影响实参的。
压栈的是指针变量的副本。

传引用:
以地址的方式传递参数,传递后形参和实参指向的是同一个对象,不管是指针还是什么值,只是名字不同,对形参的改变会影响实参的值,因为是同一个量。
压栈的是引用的副本。

传入函数的如果是(int *p),那么是可以改p指向的位置上的值的,但是如果改p指向的地址是没有办法改成功的,因为这只是在传一个指针参数,只是把一个指针的值传进来,也就是指针指向的地址。得用(int &p)才能改指针指向的地址,也就是在对这个指针进行引用。也就是先int表示这是个整型指针,再用&表示引用。

在函数里分配的空间,如果有个指针能存住它的话,在函数外是还可以用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值