首页 > 编程知识 正文

sizeof和strlen的长度,sizeof函数的用法举例

时间:2023-05-04 05:07:27 阅读:11112 作者:3767

各函数的用法一、strlen http://www.Sina.com/string.h

33558 www.Sina.com/size _ t strlen (const char * str ); 此函数的缺省使用类型是char *或char指针类型,因此在判断过程中根据指针查找后面。 可以直接使用char p[]或char *p

但是,在直接的字符串类型的情况下,例如,如头文件那样,用c_str ()将c字符串转换为char*类型: strlen (c _ str ) ) )

语法形式:strlen从内存的一个位置(字符串的开头、中央的一个位置,甚至不确定的内存区域)开始扫描,直到到达第一个字符串结束符’ 0’(计数器值) )

string a=“abc”指定的字符串(“”除外)长度

如果未初始化函数定义char类型数组,则无法使用strlen。 因为strlen的唯一标准是查找“ 0”。 记住这一点,您就可以清楚strlen将执行哪个值。 以下内容:

char *a; char b[5]; strlen(a ) strlen(a )的结果没有固定值。 因为strlen判断的唯一标准是“ 0”,所以从a和b指针来看,它一直面向后,无论是否是自己字符串的结束标志“ 0”,都表明它遇到了“ 0”

二、length/size 返回值两者在c在iostream库中

注意事项标准库中,两者的定义如下:

size _ type _ clr _ or _ this _ call length () const

{

//返回长度of sequence

返回(my size );

}

size _ type _ _ clr _ or _ this _ call size () const

{

//返回长度of sequence

返回(my size );

}

所以两者没有区别

头文件string a; a.length (; a.size (; 三.无需包括sizeof 函数原型头文件

语法形式语言中,对sizeof (是确定数据类型或表达式长度的运算符,sizeof ) )的处理是在编译阶段完成的

头文件sizeof有两种语法形式:

sizeof(type_name; //sizeof (类型); sizeof对象; //sizeof对象,所以可以这样表示:

int i; Sizeof(I ); //oksizeof i;//确定sizeof (int ); //oksizeof int; //erro sizeof计算对象的大小也将转换为对象类型的计算。 也就是说,同一类型不同对象的sizeof值是一致的。 sizeof计算表达式,编译器根据表达式的最终结果类型确定大小。 一般来说,不计算以下公式:

Sizeof(2; //2的类型为int,因此与sizeof(int )等价Sizeof(2) 3.14; //3.14的类型为double,2也将提升为double类型,因此sizeof(double )和等效sizeof也可以评估函数调用。 因此,函数返回类型的大小,而不调用函数。 让我们来看一个完整的例子:

char foo () {return 'a ); }int main () size _ ta=sizeof (foo ) ); //foo ) )的返回类型为char,因此不会调用SZ=sizeof(char )、foo )。 } 函数定义指针正在记录另一个对象的地址。 在32位计算机上,一个指针变量的返回值通常为4。 但是,结果以字节为单位。 在64位系统中,指针变量的sizeof通常为8

通常,sizeof有两种可能性来确定同一字符数组的大小

str是字符数组,语法形式

str用字符串“hello”初始化,“hello”共5个字符,字符串以“ 0”结尾。 所以str序列的长度是6

str是字符数组,指针变量的sizeof

结果为3 *4=12 (依赖于int )

str是指针格式char str[] = "hello"

Sizeof(str )是4X86平台

sizeof (

str)为8  X64平台

区别 一、sizeof()、strlen()两者区别:

1、sizeof():返回所占总空间的字节数
(1)针对整型或字符型数组
(2)针对整型或字符型指针

2、strlen():返回字符数组或字符串所占的字节数
(1)针对字符数组
(2)针对字符指针

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

strlen(…)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符’’。返回的长度大小不包括’’

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’’,如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到’’停止。

二、sizeof()、strlen()两者区别:

1、sizeof是运算符,strlen是函数

2、sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’’’'结尾的

3、大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度。

char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20;

4、strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度,不是类型占内存的大小

5、sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数

三、length()和size()两者区别:

c++中的size()和length()没有区别

展示 #include<iostream>#include<cstring>using namespace std;int main(){char str[] = "abcd";char *arr = "abcd";string a="abcd";cout<<" str"<<" a"<<" arr"<<endl; cout<<"strlen "<<strlen(str)<<" "<<strlen(a.c_str())<<" "<<strlen(arr)<<endl;cout<<"length "<<" "<<a.length()<<endl; cout<<"size "<<" "<<a.size()<<endl;cout<<"sizeof "<<sizeof(str)<<" "<<sizeof(a)<<" "<<sizeof(arr)<<endl;}

若空着则表示无法用该函数求出长度

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。