C语言基础学习之sizeof与strlen区别有哪些
2022-01-08点击量:5149
在C/C++中,sizeof()是一个判断数据类型或者表达式长度的运算符。今天我们主要来讲一讲C/C++基础sizeof与strlen区别,下面先看看sizeof的定义:1、sizeof定义sizeof是C/C++中的一个操作符(operator),返回一个对象或者类型所占的内存字节数。Thesizeofkeywordgivestheamountofstorage,inbytes,associatedwithavariableoratype(includingaggregatetypes).Thiskeywordreturnsavalueoftypesize_t.——来自MSDN其返回值类型为size_t,在头文件stddef.h中定义为:typedefunsignedintsize_t;从sizeof的定义可以看出:sizeof不是一个函数,因为函数调用必须有一对括号。intnum=97;printf("sizeof(num=0)的值:%d\n",sizeof(num=0));printf("num的值:%d\n",num);运行结果为4,97;并不是4,0说明:sizeof不是标准意义上的一元操作符,不支持链式表达式,sizeof作用域范围内的语句不会编译成机器码,如sizeof(num++)中的++不执行。sizeof也不是函数,sizeof更像一个特殊的宏,在编译阶段求值。下面说一说sizeof与strlen区别:sizeof是一个操作符,strlen是库函数。sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾。编译器在编译时就计算出了sizeof的结果,而strlen函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度。数组做sizeof的参数不退化,传递给strlen就退化为指针了。如:intss[20]="0123456789";sizeof(ss)=80,//ss表示在内存中的大小,20*4。strlen(ss)//错误,strlen的参数只能是char*,且必须是以“\0”结尾的。char*ss="0123456789";sizeof(ss)=4,//ss是指向字符串常量的字符指针。sizeof(*ss)=1,//*ss是第一个字符。本文由培训无忧网达内教育专属课程顾问老师整理发布,更多C语言课程信息可关注培训无忧网C语言培训频道或添加老师微信:15033336050...