关于sizeof

sizeof是求占用的内存空间的大小,并不是指数组长度。(strlen 的长度只适合char*类型)

例如.

int a[10]={0};

数组a的长度为sizeof(a)/sizeof(a[0])——所有占用内存空间/单个元素占用的内存空间=个数

 

对于int a[10], a自己就是数组
对于int *p = new int[10], p本身不是数组,它指向的对象才是数组,但是p不包含它所指向的对象更详细信息(它不知道它指向了多少个元素。确实,即使用sizeof(*p)也还是得到4),因此你无法用sizeof计算,因为sizeof(p)计算的不是数组的大小,而是数组的开始地址大小,这个在绝大多数系统中都是4(intel的一种实时系统iRmx是6)

 

 

 

posted @ 2016-04-11 19:54  Daringoo  阅读(228)  评论(0编辑  收藏  举报