wordpress 删除死链接,站长工具seo综合查询下载,wordpress电脑手机插件,沈阳seo搜索引擎C语言中sizeof和strlen的区别是#xff1a;strlen是一个函数#xff0c;用来计算指定字符串str的长度#xff0c;但不包括结束字符#xff08;即null字符#xff09;#xff1b;而sizeof是一个单目运算符#xff0c;不是函数。区别分析#xff1a;strlen 是一个函数strlen是一个函数用来计算指定字符串str的长度但不包括结束字符即null字符而sizeof是一个单目运算符不是函数。区别分析strlen 是一个函数它用来计算指定字符串 str 的长度但不包括结束字符即 null 字符。其原型如下面的代码所示size_t strlen(char const* str);也正因为 strlen 是一个函数所以需要进行一次函数调用调用示例如下面的代码所示char sArr[] ILOVEC;/*用strlen()求长度*/printf(sArr的长度%d\n, strlen(sArr));很显然上面示例代码的运行结果为 6因为不包括结束字符 null。这里需要特别注意的是函数 strlen 返回的是一个类型为 size_t 的值从而有可能让程序导致意想不到的结果如下面的示例代码所示/*判断一*/if(strlen(x) strlen(y)){}/*判断二*/if(strlen(x)- strlen(y) 0){}从表面上看上面的两个判断表达式完全相等但实际情况并非如此。其中判断表达式一没什么问题程序也能够完全按照预想的那样工作但判断表达式二的结果就不一样了它将永远是真这是为什么呢原因很简单因为函数 strlen 的返回结果是 size_t 类型即无符号整型而 size_t 类型绝不可能是负的。因此语句“if(strlen(x)-strlen(y)0”将永远为真。同样就算表达式中同时包含了有符号整数和无符号整数还是有可能产生意想不到的结果如下面的代码所示/*判断一*/if(strlen(x) 5){}/*判断二*/if(strlen(x)- 50){}很显然判断表达式二的结果还是永远是真其原因与上面相同。关键字 sizeof 是一个单目运算符而不是一个函数。与函数 strlen 不同它的参数可以是数组、指针、类型、对象、函数等如下面的示例代码所示char sArr[] ILOVEC;/*用sizeof求长度*/printf(sArr的长度%d\n, sizeof(sArr));相对于函数 strlen这里的示例代码运行结果为 7因为它包括结束字符 null。同时对 sizeof 而言因为缓冲区已经用已知字符串进行了初始化其长度是固定的所以 sizeof 在编译时计算缓冲区的长度。也正是由于在编译时计算因此 sizeof 不能用来返回动态分配的内存空间的大小。声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。