sizeof和strlen的区别

sizeof和strlen经常被大家拿来作对比,但是他们之间的区别还是很大的。
一、定义不同:
sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
strlen是个函数,它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。

二、语法不同
strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
sizeof参数比较多元化,它的功能是返回该变量空间的大小它会将NULL也算在
里面。

三、本质区别

sizeof是求数据类型所占的空间大小
strlen是求字符串的长度,字符串以/0结尾

	char arr1[] = "abcd";
	cout << "sizeof(arr1[]):" << sizeof(arr1) << endl;   //---->5
	cout << "strlen(arr1[]):" << strlen(arr1) << endl;   //---->4
	//因为sizeof在计算arr1的时候将\0也计算在内
	//这里有一点一定要清楚,"abcd"是以\0结尾的
	//在arr1的里面放的是abcd\0这里的\0当做数据也放在了数组里面
	//而strlen在遇到\0的时候就不计算而退出函数了

	const char* arr2 = 

你可能感兴趣的:(sizeof,strlen,字符串,c语言)