浅谈C++const、sizeof
2016-09-06 00:47
197 查看
每天一记,好吧,还是记录一下今天的收获吧
对于情况4指针本身和指向内容均为常量。
对于sizeof:
sizeof是运算符,只是计算栈中分配的大小,静态变量等存放在全局数据区的不会计算进去;另外,对于结构体,考虑到性能问题,编译器会做出对齐处理,当结构体内元素的长度小于处理器的位数的时候,便以结构体最长的数据元素为对齐单位,也就是说,结构体的长度一定是最长数据元素的整数倍;如果结构体存在长度大于处理器位数的元素,那么就以处理器位数为对齐单位。结构体内类型相同的连续元素和数组一样,将在连续的空间。指针的大小为4,数组作为函数的形式参数时,传递的都是数组第一个元素的指针,所以函数中形参数组的sizeof都为4
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
相关文章推荐
- vc 浅谈sizeof
- strlen与strcpy函数实现的浅谈及辨析sizeof运算符与strlen函数的区别
- 浅谈sizeof与stelen的区别
- 结合sizeof浅谈C++中的指针和字节对齐
- 【C/C++】浅谈sizeof
- 浅谈sizeof和strlen
- 浅谈Exchange Server邮件存储系统---技巧篇
- 浅谈ORACLE中ORA-06502:PL/SQL:数字或值错误:字符到数值的转换错误
- 小神记:浅谈"DM优化"
- 浅谈Android和IOS系统的差异
- 浅谈PHP进程管理
- 响应式设计(Response Web Design)浅谈
- [置顶] 数论基础(浅谈数论的部分实现)
- sizeof struct为什么总是一个问题
- C++为什么不叫++C?——浅谈前自增与后自增的区别
- JAVA NIO之浅谈内存映射文件原理与DirectMemory
- 浅谈Alexa排名权威性和算法要素的重要性
- 浅谈.NET中接口和类的区别
- 浅谈:单例设计模式(Singleton)
- 浅谈WebLogic和Tomcat