sizeof和strlen区别


1、操作

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

而sizeof()返回的是变量声明后所占的内存数,不是实际长度。

2、参数类型

sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。

short f();

printf("%d\n", sizeof(f()));

//输出的结果是sizeof(short),即2。
3、类型

sizeof是操作符(关键字),strlen是函数。

#include
#include
using namespace std;

int main(){
	const char *str1 = "abcde";//字符串常量
	char str2[] = "abcde";//字符数组
	cout << sizeof(str1) << endl;	//4
	cout << sizeof(str2) << endl;	//6
	cout << strlen(str1) << endl;	//5
	cout << strlen(str2) << endl;	//5
	return 0;
}

/*
4	//str1指针大小
6	//加上 '\0'
5	//不加 '\0'
5	//不加 '\0'
*/