C/C++使用length()、size()、strlen()、sizeof()

定义

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

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

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

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*,算到以'\0'结尾
	cout << sizeof(b) << endl;//结果为20
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Mr_Bobcp/article/details/108217446