您的位置:首页 > 编程语言 > C语言/C++

浅谈C++const、sizeof

2016-09-06 00:47 197 查看
每天一记,好吧,还是记录一下今天的收获吧

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: