浅谈C++const、sizeof

每天一记,好吧,还是记录一下今天的收获吧

int b = 1;
const int *a = &b; //情况1
int const *a = &b; //情况2
int* const a = &b; //情况3
const int* const a = &b; //情况4
 
对于情况1和情况2,const 位于星号左侧,const就是修饰指针所指向的变量,这两种情况一样;对于情况3,const位于星号右侧,就是修饰指针本身,即指针本身是常量,对于情况1,2要改变 *a的值,

*a = 2 //错误
b = 2 //正确
a = &c //正确
指针所指向的变量*a直接改变,可以通过间接的改变或者是修改指针指向的地址,指向别处;对于情况3,指针本身是常量,不能对指针本身进行更改操作,而指针指向的内容不是常量,这时候*a = 2就正确,当然通过间接b = 2也是正确的,并且定义时必须初始化(具体请Google,360);

对于情况4指针本身和指向内容均为常量。


对于sizeof:

sizeof是运算符,只是计算栈中分配的大小,静态变量等存放在全局数据区的不会计算进去;另外,对于结构体,考虑到性能问题,编译器会做出对齐处理,当结构体内元素的长度小于处理器的位数的时候,便以结构体最长的数据元素为对齐单位,也就是说,结构体的长度一定是最长数据元素的整数倍;如果结构体存在长度大于处理器位数的元素,那么就以处理器位数为对齐单位。结构体内类型相同的连续元素和数组一样,将在连续的空间。指针的大小为4,数组作为函数的形式参数时,传递的都是数组第一个元素的指针,所以函数中形参数组的sizeof都为4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值