码迷,mamicode.com
首页 > 编程语言 > 详细

c++编程思想(三)--c++中c 续,重点sizeof和内存对齐

时间:2017-02-21 01:05:40      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:...   调试   处理   指针数组   数组   png   机器   方式   分享   

之前理论性的太多,下面就是代码及理论结合了

1、sizeof()是一个独立运算符,并不是函数,可以让我们知道任何变量字节数,可以顺带学一下struct,union,内存对齐

内存对齐:为了机器指令快速指向地址值,编译器内部实际上会内存对齐,怎么理解了,以struct为例

先讲一下各个变量类型内存大小

技术分享

所以struct理论上是:1+2+4+4+4+8+8 = 31,但是实际是

技术分享实际大小是32(1+2+1+4)+(4+4)+8+8

然后再把int和short位置调换

技术分享

实际大小是40   (1+3)+4+(2+2)+4+(4+4)+8+8

这边会因为不同的系统位数和编译器产生不同的变化

union更出乎意料

技术分享g

其所有变量共用一个地址,所以内存大小为最大的一个变量,一次只能保存一个变量的值,会覆盖

2、下面提俩个调试技巧

汇编或者在硬件上嵌入式开发的时候,不方便代码频繁修改,可以用

1)、预处理的方式

#define DEBUG

#if DEBUG

/*  处理调试  */

#endif

2)、代码开关,加个bool 参数,其值可以从函数参数输入

 

3、函数指针

void func(){

..................;

}这是函数申明

void (*p) ();函数指针,指向一个无参返回值为void型的函数,这是基本的

还有很多复杂的感觉不会用到,如double  (*(*(*p)())[10])();p是一个指向函数的指针,并且无参数,并指向一个含有10个指向函数指针数组的指针--业务代码很少用,这么用后面也基本上没有办法维护了,顶多个人自己写的库内部使用,不应该作为接口

注意: int (*(*p())[10]) ();是一个函数,p是一个返回指针的函数,该指针指向含有10个函数指针的数组

 

c++编程思想(三)--c++中c 续,重点sizeof和内存对齐

标签:...   调试   处理   指针数组   数组   png   机器   方式   分享   

原文地址:http://www.cnblogs.com/effortscodepanda/p/6422056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!