strlen sizeof,C语言中sizeof和strlen函式区别在哪?
strlen sizeof,C语言中sizeof和strlen函式区别在哪?详细介绍
本文目录一览: sizeof和strlen区别
sizeof和strlen区别就是含义不同,运行结果不同等。
strlen表示的是一个计数器的工作,它是从内存的某个位置(这里的位置可以是字符串开头,中间某个位置,也可以是某个不确定的内存区域)开始扫描,然后直至碰到第一个字符串结束符'\0'为止,然后返回计数器值。sizeof在C语言中,是用于判断数据类型或者表达式长度的运算符。
strlen后是不加最后的结束标志'\0',其表示字符串的长度。而sizeof求的是字符串所在内存中的长度,所以它是加上最最后的结束标志'\0'的。sizeof可以用类型做参数,可以用函数做参数,而strlen只能用char*做参数。
sizeof函数
在Pascal语言中,sizeof()是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在C语言中,sizeof()是一个判断数据类型或者表达式长度的运算符。
在Pascal语言与C语言中,对sizeof()的处理都是在编译阶段进行。
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。sizeof对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。
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。
c语言sizeof和strlen的区别
char name[]="nike" ;
sizeof(name)=5
如果数组定义成int,就不能用scanf("%s",name);来输入字符串了,因为这两个类型是不同的。%s只能输入char字符串数据
sizeof运算符计算的是操作数类型的大小,只是数组会乘以长度而已,和传入的具体内容无关。
要强行输出5的话那就sizeof("nike")吧……
要强行可以计算补了0长度的那就strlen+1
\0 只在char型数组中才有。
区别如下:
1、指代上的区别
(1)sizeof:用来获取字符串长度的导引,是处理字符串的重要工具。
(2)strlen:做的是一个计数器。
2、用法上的区别
(1)sizeof:sizeof( type_name ); // sizeof(type); 在编译时有效,而不是在运行时有效。
(2)strlen:extern unsigned int strlen(char *s); 返回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。
sizeof和strlen区别
sizeof和strlen的区别是:含义不同、功能不同。
1、含义不同
在定义时,要知道到strlen是一个函数,它用来计算指定字符串str的长度,但不包括结束字符(即null字符)。而sizeof是一个单目运算符,而不是一个函数,它的参数可以是数组、指针、类型、对象、函数等。这就是strlen和sizeof的最本质区别。
2、功能不同
sizeof的功能能比较简单,主要是:获得保证,能容纳实现所建立的最大对象的字节大小。而strlen的功能就比较多和繁琐了,是返回字符串的长度,这个字符串可能是自己定义的,也可能是内存中随机的,这个函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL,返回的长度大小不包括NULL。
strlen的用法特点
strlen=string length,顾名思义,该函数是用来求解字符串的长度的,所以我们也应该探讨一下字符串的概念;我们都知道在编译器中输入printf(“Hello World!”),就会输出“Hello World!”,这就是一个字符串,类似这种由双引号引起来的一串字符称为字符串面值,或者简称字符串。
接着我们就需要了解一下“\0”这个转义字符了,记住任何一个字符串的结尾都会隐藏一个“\0”,他是字符串的结束标志,所以我们在用strlen函数读取字符串的时候,当我们遇到“\0”时我们就要停止读取,此时“\0”前字符的个数就是字符串的长度,注意:这里的“\0"只是结束标志,仅仅告诉我们strlen函数读取到这里就要停止了,“\0”不算做一个字符!
以上内容参考百度百科-sizeof百度百科-strlen
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的长度,不包含终止符NULL。
3、规则上的区别
(1)sizeof:可用于任何变量名,类型名或常量值。 当用于变量名(不是数组名)或常量时,不需要括号。
(2)strlen:从内存的某个特定位置开始扫描(可以是字符串的开头,中间的某个位置,甚至是不确定的存储区域),直到第一个字符串结束字符'\ 0'为止 ,然后返回计数器值。
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;
希望楼主能明白
strlen和sizeof求字符串长度的区别
strlen是返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。sizeof是获得保证能容纳实现所建立的最大对象的字节大小。
strlen和sizeof求字符串长度的区别 一、定义不同
sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。
二、语法不同
1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。
2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
sizeof和strlen在c语言的区别是什么?
sizeof和strlen在c语言的区别是:用法不同。
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。sizeof是算符,strlen是函数。sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以“\0”结尾的。
strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。
函数调用:
sizeof(函数名())
sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用,举例来说定义如下函数:
int myprint ()
{undefined
printf(“hello\n”);
return 0;
}
int main()
{undefined
printf(“%d”,sizeof(mypaint()));
return 0;
}
结果只打印函数返回类型的sizeof值,并没有打印hello说明函数myprint并没有调用。
C语言中sizeof和strlen函式区别在哪?
C语言中sizeof和strlen函式区别在哪? 一、sizeof sizeof(...)是运算子,在标头档案中typedef为unsigned int,其值在编译时即计算好了,引数可以是阵列、指标、型别、物件、函式等。 它的功能是:获得保证能容纳实现所建立的最大物件的位元组大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的记忆体空间的大小。实际上,用sizeof来返回型别以及静态分配的物件、结构或阵列所占的空间,返回值跟物件、结构、阵列所储存的内容没有关系。 具体而言,当引数分别如下时,sizeof返回的值表示的含义如下: 阵列——编译时分配的阵列空间大小; 指标——储存该指标所用的空间大小(储存该指标的地址的长度,是长整型,应该为4); 型别——该型别所占的空间大小; 物件——物件的实际占用空间大小; 函式——函式的返回型别所占的空间大小。函式的返回型别不能是void。 二、strlen strlen(...)是函式,要在执行时才能计算。引数必须是字元型指标(char*)。当阵列名作为引数传入时,实际上阵列就退化成指标了。 它的功能是:返回字串的长度。该字串可能是自己定义的,也可能是记忆体中随机的,该函式实际完成的功能是从代表该字串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL; 1.sizeof操作符的结果型别是size_t,它在标头档案中typedef为unsigned int型别。 该型别保证能容纳实现所建立的最大物件的位元组大小。 2.sizeof是算符,strlen是函式。 3.sizeof可以用型别做引数,strlen只能用char*做引数,且必须是以''\0''结尾的。 sizeof还可以用函式做引数,比如: short f(); printf("%d\n", sizeof(f())); 输出的结果是sizeof(short),即2。 4.阵列做sizeof的引数不退化,传递给strlen就退化为指标了。 5.大部分编译程式 在编译的时候就把sizeof计算过了 是型别或是变数的长度这就是sizeof(x)可以用来定义阵列维数的原因 char str[20]="0123456789"; int a=strlen(str); a=10; int b=sizeof(str); 而b=20; 6.strlen的结果要在执行的时候才能计算出来,时用来计算字串的长度,不是型别占记忆体的大小。 7.sizeof后如果是型别必须加括弧,如果是变数名可以不加括弧。这是因为sizeof是个操作符不是个函式。 8.当适用了于一个结构型别时或变数, sizeof 返回实际的大小, 当适用一静态地空间阵列, sizeof 归还全部阵列的尺寸。 sizeof 操作符不能返回动态地被分派了的阵列或外部的阵列的尺寸 9.阵列作为引数传给函式时传的是指标而不是阵列,传递的是阵列的首地址, 如: fun(char [8]) fun(char []) 都等价于 fun(char *) 在C++里引数传递阵列永远都是传递指向阵列首元素的指标,编译器不知道阵列的大小 如果想在函式内知道阵列的大小, 需要这样做: 进入函式后用memcpy拷贝出来,长度由另一个形参传进去 fun(unsiged char *p1, int len) { unsigned char* buf = new unsigned char[len+1] memcpy(buf, p1, len); }
C语言中关于sizeof 和 strlen的区别分析 sizeof获得是所占的位元组数,所分配的空间的位元组数。 strlen获得是长度(实际字元的个数)。 例如: char a[5]="abc"; sizeof(a) 等于5,因为分配了5个位元组的空间。 而strlen(a)等于3,这是其实际字元的个数
c语言中lei与lei区别在哪? 你题目两个都是lei 没有区别的。 完全相同。
c语言中的sizeof和strenl的区别 sizeof 是占用实际空间的大小。 这个对一个变数来说 是固定不变的。 strlen 仅可以用在字串上,是统计到结束符\0的长度。 一般情况下 strlen必然会比sizeof小。不过 这个也不是绝对的。
C语言中 memcmp 和 strcmp 函式有哪些区别 1、cmp 是 pare,比较的缩写。 2、strcmp是C语言中标头档案
(字串函式)中定义的一个用于对两组字串进行比较的函式,它的返回值是int型别。 假设有两组字串cs和ct,当cs
ct时,函式返回一个正数。 即:两个字串自左向右逐个字元相比(按ASCII值大小相比较),直到出现不同的字元或遇'\0'为止。如:"A"<"B" ,"a">"A" ,"puter">"pare" ,"put">"p" strcmp函式原型为:int strcmp(const char *s1,const char * s2);
C语言中的sizeof和length怎么区别? sizeof可以计算一个型别乃至一个结构的大小空间 length只是针对字串而言的 而且标准c里没有length这个函式 只有在C++中的string类中才有length这个函式
求C语言中strlen()函式的原始码 unsigned int strlen(const char *s) { int len = 0; while(*s++) len++; return len; }
请问c语言中malloc函式和realloc的区别 1.malloc(n*sizeof(int)) /* 请求n个连续的、每个长度为整型的空间,若成功返回这些空间的首地址,失败返回0 */ 2.realloc(p,sizeof(int)*n) /* 给一个已经分配了地址的指标重新分配空间,引数p为原有的空间地址*/
c语言中,void在函式括号内和在函式前面的区别. void在函式括号内:该函式的引数为空,或者说该函式不带引数 void在函式前面:该函式返回值为空
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