码迷,mamicode.com
首页 > 其他好文 > 详细

sizeof和strlen的区别

时间:2015-07-03 10:39:52      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

1、sizeof是运算符,strlen是函数;

2、sizeof可以用类型作为参数,而strlen只能用char*型量作为参数,且必须以‘\0’结尾;

    sizeof(int)=4;

3、数组名作为sizeof的参数时,不会退化为指针,而作为函数的参数的时候会退化为指针;

   char a[10]="abc";

   sizeof(a)=10;

   strlen(a)=4;

   f(int *a[])

   {

       sizeof(a)=4;

       //因为已经退入为指针

   }

4、sizeof的值在编译时就已经确定,所以sizeof(x)可以用来创建数组,而strlen的值要在运行期才能确定;

   char a[sizeof(int)];

5、sizeof计算的是栈上分配的空间的大小,所以static(全局数据区)、动态数组(堆)无法用sizeof统计大小;

6、用sizeof计算结构变量大小时,一定要注意数据对齐问题;

(C++传统数组作为参数,传递的都是指向数组首地址的指针,数组长度需要额外形参传入,当然,也可以用容器)

版权声明:本文为博主原创文章,未经博主允许不得转载。

sizeof和strlen的区别

标签:

原文地址:http://blog.csdn.net/walker19900515/article/details/46737245

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