sizeof和strlen的区别

简介:

一、sizeof

    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。

    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。

    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。

    具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:

    数组——编译时分配的数组空间大小;

    指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4(和编译器有关));

    类型——该类型所占的空间大小;

    对象——对象的实际占用空间大小;

    函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。

二、strlen

    strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。

    它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

三、举例

1.char str[20]="0123456789"; 

int   a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 

int   b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响

char *str1="absde";

char str2[]="absde";

char str3[8]={'a',};

char ss[] = "0123456789";

输出:

sizeof(str1)=4,

sizeof(str2)=6,

sizeof(str3)=8,

sizeof(ss)=11,


strlen(str1)=5,

strlen(str2) =5,

strlen(str3)=1,

strlen(ss))=10;


本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1963085,如需转载请自行联系原作者

相关文章
|
2月前
strlen与sizeof 的基本用法
strlen与sizeof 的基本用法
23 0
|
4月前
|
Serverless
sizeof和strlen的区别【详解】
sizeof和strlen的区别【详解】
29 0
|
9月前
strlen和sizeof详解
strlen和sizeof详解
60 0
|
4月前
|
C语言
strlen和sizeof的区别
strlen和sizeof的区别
39 0
|
4月前
strlen与sizeof的区别
strlen与sizeof的区别
22 0
|
5月前
sizeof和strlen的对比
sizeof和strlen的对比
22 0
|
7月前
sizeof与strlen区别
sizeof是关键字,参数可以是各种数据(包括函数,类型,对象,数组,指针……)用于计算数据所占字节大小 strlen是函数,参数类型必须是字符型指针(char *),用于计算字符串,从字符串的第一个地址开始遍历,直到遇到‘\0’停止
46 0
|
10月前
sizeof与strlen练习
sizeof与strlen练习
36 0
|
12月前
|
机器学习/深度学习 C语言
sizeof与strlen的区别和详解
sizeof与strlen的区别和详解
|
存储 编译器 C++
sizeof 与strlen的区别与联系
sizeof 与strlen的区别与联系
sizeof 与strlen的区别与联系