strlen函数与sizeof的区别

1. strlen函数

【原型】:

size_t strlen(char const* str);

【作用】:

strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)

【实例】:

char sArr[] = "ILOVEC";
/*用strlen()求长度*/
printf("sArr的长度=%d\n", strlen(sArr));
// 结果:6

【注意】:

函数 strlen 返回的是一个类型为 size_t (无符号整型)的值,从而有可能让程序导致意想不到的结果
if(strlen(x)- strlen(y)>= 0) 将永远为真。

同样,就算表达式中同时包含了有符号整数和无符号整数,还是有可能产生意想不到的结果
if(strlen(x)- 5>=0) 将永远为真。

2. sizeof

【作用】:

关键字 sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等,如下面的示例代码所示:

char sArr[] = "ILOVEC";
/*用sizeof求长度*/
printf("sArr的长度=%d\n", sizeof(sArr));

相对于函数 strlen,这里的示例代码运行结果为 7(因为它包括结束字符 null)

【注意】:

sizeof在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。

原文地址:https://www.cnblogs.com/vivian187/p/12707521.html

时间: 2024-08-29 21:08:56

strlen函数与sizeof的区别的相关文章

strcpy,strlen, strcat, strcmp函数,strlen函数和sizeof的区别

//计算字符串实际长度        //strlen()函数:当遇到'\0'时,计算结束,'\0'不计入长度之内,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止//    char string[] = "I Love You!";//    unsigned long len = strlen(string);//    printf("len = %lu\n", len);  //11//    //    stri

【字符串】strlen函数与sizeof的区别

对于 strlen 和 sizeof,相信不少程序员会混淆其功能.虽然从表面上看它们都可以求字符串的长度,但二者却存在着许多不同之处及本质区别. strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符).其原型如下面的代码所示: 1 size_t strlen(char const* str); 也正因为 strlen 是一个函数,所以需要进行一次函数调用,调用示例如下面的代码所示: 1 char sArr[] = "ILOVEC"; 2

C++ sizeof操作符的用法和strlen函数的区别

摘要:本人首先介绍了C++中sizeof操作符的用法和注意事项,其次对比了和strlen的区别和使用,方便大家在写代码的时候查阅,和面试.笔试的时候复习. 目录: sizeof的用法: sizeof和strlen的区别: sizeof的用法: sizeof 是一种单目操作符,而不是函数.sizeof以字节形式给出操作数的存储空间. 操作数可以是一个表达式或在括号内的类型名.操作数的存储空间由操作数的类型决定. char str[]="hello"; char str1[100]; ch

函数strlen()和sizeof的区别

函数strlen()和sizeof的区别: #include<stdio.h> #include<stdlib.h> #include<string.h> #define SENTENCE "It is a cat" int main() { char name[40]; gets(name); printf("%s\n", name); printf("The size of name is %zd %d\nThe s

C语言——strlen()和sizeof的区别

strlen()和sizeof()的区别: strlen()——>C字符串库函数,返回字符串的真实长度.它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值. sizeof()——>操作符,返回的是变量声明后“占用”的内存大小,可能不是实际大小. int num; sizeof(num);  返回num占用内存大小.也可写作sizeof num (当后面是变量名时,可不加括号.) sizeof(int);  返回int型数据占用内存大小.(当后面是类型名时,一定要加括号.) 下面

C++中sizeof操作符与strlen函数

sizeof操作符: sizeof是一个操作符,返回一条表达式或一个类型名字所占的字节数.返回值一个常量表达式,类型为size_t. size_t sizeof(type) size_t sizeof expr 在sizeof的运算对象中解引用一个无效指针仍然是一种安全的行为,因为指针实际上并没有被真正使用,sizeof并不需要真的解引用指针也能知道它所指对象的类型. sizeof对C++的所有内置类型求其所占空间的大小: 环境:win7 64-bits, Code::Blocks 16.01,

Strlen()与Sizeof()的区别

strlen()函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'.strlen的结果在运行时才能计算来. sizeof()返回的是变量声明后所占的内存数,不是实际长度此外sizeof不是函数,仅仅是一个操作符,strlen是函数.sizeof在编译时计算出来. 例子: 1.char* s="123456789";  sizeof(s)//4,s是指向字符串常量的字符指针  strl

C语言中sizeof、strlen函数的使用

一.测试环境 Win10 + Visual Studio 2017 二.测试代码 #include "pch.h" #include <iostream> #include <string> #include <vector> using namespace std; int main(void) { char a[10] = "hello"; char b[10] = { 'h','e','l','l','o'}; char c

sizeof运算符、strlen()函数和转义字符

本篇文章posted on 2019-12-23 12:58 本人之前写过一篇类似的文章(链接:sizeof运算符和strlen()函数),也比较深入,但是和本篇相比,本篇更加深入. 首先请看下面的代码,这个代码应该输出什么. 下面是C语言代码. 1 #include<stdio.h> 2 3 int main(void) 4 { 5 int a=2,b=0; 6 sizeof(b=a++); 7 printf("a=%d,b=%d\n",a,b); 8 return 0;