//<!--1:sizeof()-->
//<!--**sizeof() 不能用来返回动态分配的内存空间的大小**。-->
char str[30];
gets(str); //输入str
cout<<sizeof(str)<<endl;
//输入“Hello”,结果是30。因为sizeof() 在该段程序中的作用是计算字符数组str所占空间字节数的大小,而字符数组str在创建时,系统自动给他分配了30个空间字节
<!--2:**strlen()** 是一种函数,用于计算**字符串**的长度,(只能计算字符串),‘\0’作为终止符,返回的长度大小不包括’\0’-->
char str[30];
gets(str);
cout<<strlen(str)<<endl;
//输入“Hello”,结果是5即字符数组str的长度
string str;
cin>>str;
cout<<str.size()<<endl;
cout<<str.length()<<endl;
//输入字符串“Hello”,两个函数结果都为5
<!--sizeof(arr)/sizeof(arr[0])-->
这个表达式的意思是计算数组 arr 的大小(以字节为单位)除以数组中第一个元素的大小(以字节为单位),得到的值即为数组 arr 中元素的个数。
int arr[] = { 1,2,3,4,5,6,7,8 };
int len = sizeof(arr) / sizeof(arr[0]);
cout << len;
//结果8
总结:sizeof() 可以以类型、指针、数组和函数等作为参数,其值在编译时计算,用于获取操作数所占空间的字节数大小。 strlen()函数其参数只能为char(字符型指针),所以在计算字符数组(char str[ ])时,一般用strlen()函数(也只能用于计算字符数组了)。 size()函数以及length()函数都用于计算字符串(string)长度,不能用char作为参数。除此之外,size()函数还可以获取vector类型的长度。