专栏名称: 开点工作室
计算机专业书籍编写、IT企业面试笔试试题分析、计算机教育培训、技术文章、工具资源、精选课程、热点资讯。
目录
相关文章推荐
程序员的那些事  ·  被公司辞退,拿到22万补偿金。结果在准备入职 ... ·  昨天  
程序员的那些事  ·  北京大学出的第二份 DeepSeek ... ·  昨天  
程序员小灰  ·  我也入局了。。。 ·  2 天前  
OSC开源社区  ·  PostgreSQL 18新特性前瞻 ·  3 天前  
51好读  ›  专栏  ›  开点工作室

开点程序员面试必考题--strlen和sizeof的区别

开点工作室  · 公众号  · 程序员  · 2017-03-07 07:17

正文

戳上面的蓝字“开点工作室”关注我们哦


strlen是C/C++的标准库函数,其功能是计算字符串长度。sizeof是单目运算符,其功能是计算运算对象(变量或数据类型)所占字节数。两者完全不同。


两者的主要区别如下:


1)sizeof是关键字,是单目运算符,有优先级。strlen是函数名,在使用时必须include相关的头文件string.h。


2)使用sizeof可以求各类变量或者数据类型所占用的字节数。而strlen只能求字符串的长度,要求的参数类型只能是char *,且其中保存的字符串必须是以串结束标记 '\0' 作为结尾。


3)当运算对象为字符数组时,例如,char str[100]="CHINA" *p=str;,sizeof( str )得到的是数组str的大小,结果为100;而strlen( str )返回的是数组str中保存的字符串的长度,结果为5。sizeof( p )得到的是指针变量p所占用的内存大小,结果为4;而strlen( p )返回的是指针p所指向的字符串的长度,结果为5。


4)strlen是在程序运行期间计算出来的。多数情况下,sizeof是在编译时计算完成的,但有时也需要在运行时通过计算才能得到。例如求动态数组占用的字节数。

5)当使用sizeof计算一个结构类型或变量占用的字节数时,返回的是实际占用内存的大小。当使用sizeof计算一个静态变量或数组时,可得到整个数组所占的大小。使用sizeof求动态数组的大小与编译器相关,有的编译器是不支持这一功能的。


运行下列程序。


#include

#include

int main()

{      inta, x, n;

charstr[100]="CHINA", *p=str;

x= sizeof a; // sizeof 求变量所占字节数,可以不用括号

a= sizeof(int);  //用sizeof求类型所占字节数,必须用括号







请到「今天看啥」查看全文