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
", 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语言中标头档案<string.h>(字串函式)中定义的一个用于对两组字串进行比较的函式,它的返回值是int型别。
假设有两组字串cs和ct,当cs<ct时,函式返回一个负数;当cs==ct时,函式返回0;当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在函式前面:该函式返回值为空



~

strlen和sizeof的区别
答:strlen和sizeof在C语言中都是常用的函数,区别在于它们的用途、返回值和计算方式。sizeof是一个运算符,而strlen是一个函数。sizeof用于计算数据类型或变量的大小,而strlen用于计算字符串的长度。sizeof可以计算类型或变量的长度,而strlen只能用于字符串。当sizeof用于类型或变量时,它返回的是该类型或...

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

C语言中sizeof和strlen函数区别在哪?
答: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的结果要在运行...

C语言中p[20]={'a','b','c'}中的sizeof(p)和strlen(p)分别是? q[]=...
答:strlen()是用来求字符串的长度,你里面至初始化了3个值 sizeof(q)是求字符数组的长度,虽然你只初始化了3个数组元素,但第四个元素系统会自动赋值为'\0','\0'是字符串结束的表示;但用strlen()函数来长度的值的时候是不包括'\0'的 希望不明白可以继续提问,乐意回答 呵呵 ...

sizeof和strlen在c语言的区别是什么?
答:区别如下:1、strlen是一个函数,sizeof是一个运算符。2、sizeof可以用任何类型做参数;strlen只能用“char*”型,且必须是以“\0”结尾的。3、sizeo返回字符串长度时,包括结束字符“null”;strlen不包括。sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数...

c语言 字符数组 字符指针 sizeof strlen 的区别
答:4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因。char str[20]="0123456789";// str是编译期大小已经固定的数组 int a=strlen(str);// a=10;//strlen()在运行起...

sizeof和strlen在c语言的区别是什么?
答:sizeof和strlen在c语言的区别是:用法不同。sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。sizeof是算符,strlen是函数。sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以“\0”结尾的。strlen的结果要在运行...

C语言中sizeof和strlen函式区别在哪?
答:C语言中sizeof和strlen函式区别在哪? 一、sizeof sizeof(...)是运算子,在标头档案中typedef为unsigned int,其值在编译时即计算好了,引数可以是阵列、指标、型别、物件、函式等。 它的功能是:获得保证能容纳实现所建立的最大物件的位元组大小。 由于在编译时计算,因此sizeof不能用来...

c语言 字符数组 字符指针 sizeof strlen 的区别
答:c语言 字符数组、字符指针、sizeof strlen的区别为:数据长度不同、操作不同、所占空间不同。一、数据长度不同 1、字符数组:字符数组需要在初始化时就定义字符数组的数据长度。2、字符指针:字符指针的数据长度由指针指向的字符数据决定。3、sizeof strlen:sizeof strlen自动确定sizeof strlen的数据长度...

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