概述
定义
sizeof(…)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
strlen(…)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符’ ’。返回的长度大小不包括’ ’。
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’ ’,如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到’ ’停止。
str.length()和str.size()都可以求字符串长度。
其中str.length()和str.size()是用于求string类对象的成员函数
代码
#include<iostream>
#include<string>
using namespace std;
int main() {
string str = "0123456789";
cout << "str.length()=" << str.length() << endl;//结果为10
cout << "str.size()=" << str.size() << endl;//结果为10
char a[] = "abcde";
cout << strlen(a) << endl;//结果为5
cout << sizeof(a) << endl;//结果为6
char *p = a;
cout << strlen(p) << endl;//结果为5
cout << sizeof(*p) << endl;//结果为1
int b[5] = { '123', '21'};
cout << strlen((char *)b) << endl;//结果为3,strlen参数只能是char*,算到以'