????????sizeof()、strlen()、length()、size()均用于获取字符串长度
? ? ? ? C++中,length()只用于获取字符串的长度。例如:
String str="abcdefg";
str.length()=7
? ? ? ? 除了与length一样可以获取字符串的长度,还可以获取vetor类型的长度
vector<int> n(15,3)//表示n中包含了15个值为3的元素
n.size()=15
?????????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)
? ? ? ? 返回字符数组或字符串所占的字节数,返回大小不包括'\0',如果只定义而不初始化,则结果是不定的,它会从aa首地址一直找下去,直到遇到'\0’结束。参数必须是字符型指针(char *),当数组名作为参数传入的时候,实际上数组已经退化为指针了。