sizeof和strlen的长度,c语言sizeof和strlen的区别是什么?
sizeof和strlen的长度,c语言sizeof和strlen的区别是什么?详细介绍
本文目录一览: strlen和sizeof求字符串长度的区别
strlen是返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。sizeof是获得保证能容纳实现所建立的最大对象的字节大小。
strlen和sizeof求字符串长度的区别 一、定义不同
sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。
二、语法不同
1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。
2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
sizeof(x),strlen(x)请问这两个是什么意思?
后者返回值是字符串X的字符串长度(不包含终止符
\0)
前者.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned
int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
sizeof是算符,strlen是函数。
这个sizeof(x
)是求括号中的变量或值所点的字节数,
而这个strlen(x)是求这个X(这个可以是一个字符串)的长度,
不包括“/0”
sizeof(str),其中str为字符串的头指针,指针占的空间为4字节,即为4
strlen(str),计算str的有效长度,hello长度为5,输出为5;
sizeof(s),s
是一个字符串,此时,sizeof
计算的是这个字符串的长度,除了hello占5个字节以外,还有一个字节的'\0'表示字符串结束,总共为6;
希望楼主能明白
C语言中sizeof和strlen函数区别在哪?
1、用法不一样
sizeof可以用类型做参数。
strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如:
short f();
printf("%d\n", sizeof(f()));
输出的结果是sizeof(short),即2。
2、功能不一样
sizeof的功能能是,获得保证,能容纳实现所建立的最大对象的字节大小。
strlen的功能是返回字符串的长度,该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
3、意思不一样
sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
通俗一点,简单明了一点来讲,二者都可以用来取字符串长度,不同之处在于sizeof取到的字符串长度包括字符串结束标记‘\0’,而strlen得到的长度则不包括‘\0’,而‘\0’在字符串中是不显示的,所以sizeof得到的字符串长度要比strlen得到的字符串长度大1。
纯手打,希望对你有帮助……
什么啊,那最佳答案怎么得来的啊?
那个什么最佳答案的不要误导了LZ才好,
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度,我若通过赋值方法给字符串中某一字符赋值为\0,它的strlen()值变化很大,而sizeof()不变,根本不总是长度大一的关系!!!
sizeof在编译器求解,strlen在运行期求解,这是主要区别
其次strlen只能求C风格字符串长度sizeof()可以求很多类型的大小
strlen只能求字符串的长度
而sizeof适用范围就广的多 所有的变量都能求 结构什么的。另外,一些看不见的,诸如\0也会计算在内
1、操作
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
而sizeof()返回的是变量声明后所占的内存数,不是实际长度。
2、参数类型
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
3、类型
sizeof是操作符(关键字),strlen是函数。
扩展资料
strlen函数原型:
size_t strlen(const char *string)
size_t 是无符号整数的别名,在vs2008编译器中可以查看其宏定义。
功能:
其功能是获取字符串的长度。
返回值:
在MSDN文档中查看strlen函数的返回值,叙述如下。
Each of these functions returns the number of characters in string, excluding the terminal NULL. No return value is reserved to indicate an error.
每个函数都返回字符串中的字符数,不包括终端NULL。不保留返回值以指示错误。
参数:
Null-terminated string
空终止字符串, 字符串标准库提供的头文件中包含操作以空字符结尾的字符串(null-terminated string)的函数。
参考资料:百度百科——strlen
sizeof(x),strlen(x)请问这两个是什么意思?
原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,
原型为size_t strlen( const char *string );,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t;。
头文件:string.h
格式:strlen (字符数组名)
功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
sizeof()是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
MSDN上的解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为 typedef unsigned int size_t; 世上编译器林林总总,但作为一个规范,它们都会保证char、signed char和unsigned char的sizeof值为1,毕竟char是我们编程能用的最小数据类型。
2. 语法: sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
这个sizeof(x )是求括号中的变量或值所点的字节数, 而这个strlen(x)是求这个X(这个可以是一个字符串)的长度, 不包括“/0”
后者返回值是字符串X的字符串长度(不包含终止符 \0)
前者.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。
sizeof是算符,strlen是函数。
sizeof(x)表示求它的字节长如sizeof(char)=1 ,strlen(x)求其字符串的长度
C语言中strlen()函数和sizof()函数分别怎么用?区别是什么
strlen函数的参数是字符串,而sizeof函数的参数是类型或者变量,如果传入的是变量,则返回的是变量类型的大小,如果传入的是数组,则返回的是数组类型的大小乘以数组的元素个数,如果传入一个字符串指针,返回的是指针的大小。这两个新手容易混淆。如果仍有什么不明白,请追问。
记得采纳啊
本来不想发言的,但看到楼上的回答说strlen()计算字符串时连'\0'也算上,我顿时无语。 那你调试一下看看,看看是不是算上'\0'? strlen()是遇到'\0'就结束计算,是不计'\0'的。这一点要记住。 sizeof()是计算变量或者类型占用内存空间的字节数。 如果有 char str[] = "asdfg"; printf("%d\n", strlen(str)); printf("%d\n",sizeof(char)); printf("%d\n",sizeof(str)); 结果会是 5 1 6 从上面就可以看出strlen()是不计'\0' char是类型,可以用sizeof()操作,char占用一个字节 因为str是变量,所以可以用sizeof()计算它占用内存的字节数,又一个字符是占用一个字节内存,所以数组str占用6个字节 以上就是sizeof()和strlen()使用的区别
strlen() 是统计字符串的长度,要加上'\0'例如strlen("abcd");这时返回值是5因为还有一个'\0' sizof()是统计一个字符串占用的字节数例如sizeof("abcd");这里返回值是4,它不加最后的'\0'
简单的说 strlen() 是统计一个字符串有几个字符,这时要算上'\0'。 sizof()是统计一个字符串占用了几个字节
strlen是求字符串的大小,sizeof是求变量占的内存的大小
1、用法:
strlen(char* pstr);//求的是字符串的实际长度
sizeof(类型说明符,数组名或表达式) 或sizeof ( 变量名)
比如说有以下数据类型:int arr[10] ,a; char *str="hello world"; sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);
2、区别:
2.1 sizeof()是C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
2.2 strlen()求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
总结的说来sizeof的适用范围更广,但是在返回实际的字符数组中的数据是,strlen()更方便,因为它返回的是实际的字符串长度,而sizeof是返回数组大小。
请问说数组长度是指有效长度(strlen统计出的数)还是指sizeof统计出的数呢?谢谢啦
比如说定义一个数组a[10]则气有效长度就是sizeof测出来的;
如果是a[]="bcdef";则有效长度是strlen测出来的,而sizeof测出来的还包含'\0'这个位;
数组长度是指他实际的长度,用sizeof计算出来的。
应该是实际有多少内容吧,strlen的长度
sizeof是占用了多少内存空间
你好!!!
是sizeof统计出来的。
比如:
char s[20];告诉编译器我们声明一个数组,数组的大小是20,此次会在栈里分配了20个字节的空间,编译器暂时不会关心里面放到是什么,有多少个字符。
如char a[]={‘a’,’b’,’c’}; char a[5]={ ‘a’,’b’,’c’}他们的分别strlen和sizeof为多少?
sizeof分别为3和5
char a[]的strlen不确定,因为其没有字符串结束符'\0',要看系统内存状况。
char a[5]的strlen为3,因其前面三个字符初始化为abc,后面填充0.
a【】:strlen为3 sizeof为4
a【5】:strlen为3 sizeof为5
strlen 是返回字符串的长度。
而sizeof,却是用来取得变量或类型所占用的内存大小的。
char a[]={‘a’,’b’,’c’};
strlen是3
sizeof是4
char a[5]={ ‘a’,’b’,’c’}
strlen是3
sizeof是5
c/c++里面,字符串是以\0结尾的
char a[]={‘a’,’b’,’c’};要加上一个结束符\0,故是a[4,]这里也即是a[4]="abc",长度是3,大小4
char a[5]={ ‘a’,’b’,’c’},这里既是a[5]="abc",长度是3,大小是5
前者:
strlen:不确定,因为没有字符串结束符 '\0',长度是任意的
sizeof:3,因为定义时定义了3个字符,因此数组大小被定为3
后者:
strlen:不确定,因为没有字符串结束符 '\0',长度是任意的
sizeof:5,因为定义时定义了a的大小为5
c语言sizeof和strlen的区别是什么?
一、指代不同
1、sizeof:用于获取字符串的长度,是处理字符串的重要工具。
2、strlen:所作的是一个计数器的工作。
二、规则不同
1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要用圆括号。
2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。
定义
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t。
为什么sizeof为4strlen为11.strlen不是计算到空格吗?为什么strlen不是5
sizeof计算的是类型的长度。你的代码中,sizeof算出来的是char*的类型,即指针的类型。你的电脑是32位的(win7或xp)吧?32位系统中,指针的存储空间是四个字节。所以sizeof(s1)=4.
strlen算的不是到空格位置,而是到'\0'为止,不含'\0'。这个是字符串的结束标志。在s1中,
”hello world“恰好是11个字符吧(空格也算,但是最后的‘\0’就不算了)。
移明白了么?