【C++】sizeof()、strlen()、length()、size()详解和区别

发布时间:2024年01月12日

????????sizeof()、strlen()、length()、size()均用于获取字符串长度

length():

? ? ? ? C++中,length()只用于获取字符串的长度。例如:

String str="abcdefg";

str.length()=7

size():

? ? ? ? 除了与length一样可以获取字符串的长度,还可以获取vetor类型的长度

vector<int> n(15,3)//表示n中包含了15个值为3的元素

n.size()=15

?sizeof():

?????????sizeof()用以求对象所占内存空间大小

? ? ? ? //基本数据类型

????????sizeof(char)=1;

????????sizeof(int)=4;

????????sizeof(float)=4;

????????sizeof(long)=8;????????

????????sizeof(double)=8;

????????sizeof(int *)=sizeof(float *)=sizeof(char *)=8;//指针型

????????sizeof(String)=28

? ? ? ? //常量值的长度等同于它实际类型长度

? ? ? ? sizeof(1)=sizeof(int)=4;

? ? ? ? sizeof(1.11)=sizeof(double)=8

? ? ? ? //数组,计算应该计算到"\0"的位置

? ? ? ? char a[]="123456";sizeof(a)=6+1=7????????//字符串默认结尾有一个"\0"

? ? ? ? int b[]={1,2,3,4,5};sizeof(b)=6? ? ? ? //b是数组,但不需计算到'\0'

? ? ? ? char *p=a;sizeof(*p)=1;? ? ? ? //*p指向a的第一个字符,大小为1

???????? char *q=b;sizeof(*q)=4;? ? ? ? //*p指向b的第一个字符,大小为4

????????

? ? ? ? //获取数组长度

? ? ? ? int arr[]={1,2,3,4,5}

? ? ? ? sizeof(arr)/sizeof(arr[0])= sizeof(arr)/sizeof(*arr)= sizeof(arr)/sizeof(int)

strlen:

? ? ? ? 返回字符数组或字符串所占的字节数,返回大小不包括'\0',如果只定义而不初始化,则结果是不定的,它会从aa首地址一直找下去,直到遇到'\0’结束。参数必须是字符型指针(char *),当数组名作为参数传入的时候,实际上数组已经退化为指针了。

文章来源:https://blog.csdn.net/m0_62410106/article/details/135518921
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。