sizeof与strlen的区别 strlen和sizeof有什么区别?

作者&投稿:乔萧 (若有异议请与网页底部的电邮联系)
  sizeof与strlen的区别:
  一、sizeof
  sizeof(...)是运算符,在头文件中typedef为unsignedint,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
  它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。
  由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。
  具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:
  数组——编译时分配的数组空间大小;
  指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
  类型——该类型所占的空间大小;
  对象——对象的实际占用空间大小;
  函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。
  二、strlen
  strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
  它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

你好,在C语言中sizeof是计算数据类型长度,而strlen是计算字符内容长度。

sizeof -- 是运算符,不是函数。sizeof 计算 某变量类型 占用字节数,
例如:
float a[3][3];
printf("%d %d %d",sizeof(a),sizeof(a[3]),sizeof(float));
36 12 4
strlen -- 是函数,计算字符串长度
char s[]="010\010\\010\n";
010 -- 3个
\010 -- 1个 (八进制数)
\\ -- 1个
010 -- 3个
\n -- 1个
printf("%d",sizeof(s));
得 10

sizeof()求的是字节数,不同类型的数据在内存中的字节数是不一样的,对于字符串来说,也就是字符的个数,因为一个字符占1个字节的内存,当然这里包括字符串最后的'\0'字符。
而strlen()求的是字符串的长度,也就是字符的个数,不包括最后的'\0'字符

sizeof计算变量占用的字节数
strlen计算字符串占用的字节数

你的题目应该再加一个
char s[] ="010\010\\010\n";

strlen和sizeof有什么区别?~

区别:
一、定义不同
sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。
二、语法不同
1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。
2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

扩展资料
1、sizeof是算符,strlen是函数。 数组做sizeof的参数不退化,传递给strlen就退化为指针了。strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
2、sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。
参考资料:百度百科:strlen;百度百科:sizeof

strlen计算字符串的具体长度,sizeof计算声明后所占的内存数。
strlen与sizeof的区别:
strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。
sizeof计算声明后所占的内存数(字节大小),不是实际长度。
sizeof是一个取字节运算符,而strlen是个函数。
sizeof的返回值=字符个数*字符所占的字节数,字符实际长度小于定义的长度,此时字符个数就等于定义的长度。若未给出定义的大小,分类讨论,对于字符串数组,字符大 小等于实际的字符个数+1;对于整型数组,字符个数为实际的字符个数。字符串每个字符占1个字节,整型数据每个字符占的字节数需根据系统的位数类确定,32位占4个字节。
sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。
由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。

C语言中sizeof与strlen的区别是什么
答:一、指代不同 1、sizeof:用于获取字符串的长度,是处理字符串的重要工具。2、strlen:所作的是一个计数器的工作。二、规则不同 1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要用圆括号。2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置...

strlen和sizeof有什么区别?
答:区别:一、定义不同 sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间...

sizeof与strlen的区别
答:sizeof与strlen的区别:一、sizeof sizeof(...)是运算符,在头文件中typedef为unsignedint,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上...

C语言中sizeof与strlen的区别是什么
答:1、指代上的区别 (1)sizeof:用来获取字符串长度的导引,是处理字符串的重要工具。(2)strlen:做的是一个计数器。2、用法上的区别 (1)sizeof:sizeof( type_name ); // sizeof(type); 在编译时有效,而不是在运行时有效。(2)strlen:extern unsigned int strlen(char *s); 返回s...

c语言sizeof和strlen的区别
答:1、指代上的区别 (1)sizeof:用来获取字符串长度的导引,是处理字符串的重要工具。(2)strlen:做的是一个计数器。2、用法上的区别 (1)sizeof:sizeof( type_name ); // sizeof(type); 在编译时有效,而不是在运行时有效。(2)strlen:extern unsigned int strlen(char *s); 返回s...

C语言中sizeof和strlen函数区别在哪?
答:1、操作 strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。而sizeof()返回的是变量声明后所占的内存数,不是实际长度。2、参数类型 sizeof可以用类型做参数,strlen...

sizeof与strlen的区别
答:1. strlen 是函数,sizeof 是运算符。2. strlen 测量的是字符的实际长度,以'\0' 结束。而sizeof 测量的是字符的分配大小。比如:char str[20] = "hello";printf("strlen: %d\n", strlen(str));printf("sizeof: %d\n", sizeof(str));结果显示为:strlen: 5 sizeof: 20 3.但是在子...

c语言,strlen和sizeof
答:Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做...

C语言中strlen()函数和sizof()函数分别怎么用?区别是什么
答:sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);2、区别:2.1 sizeof()是C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。2.2 strlen()求得方法是从开始到遇到第一个'\...

C++中sizeof和strlen的区别是什么?
答:strlen:是C标准库中的字符串函数,用于统计字符的个数。sizeof:是c语言中的运算符,确切的说是一个编译时运算符,用于统计类型或者变量所占的内存字节数。示例,以32位系统为例。char *str = "hello";strlen(str); //它的值是5,因为hello这个字符串有5个字符sizeof(str); //它的值是4,...