C++的sizeof()与strlen()

C++的sizeof()是运算符函数,在编译时就能并且已经确定了其参数(内置类型或自定义类型的变量或数组类型)所占字节数,
strlen()是取字符串

char cstr2[16]; //在定义时就该为'\0'终止符留下位置
	cstr2[5] = '\0';
	cout << "sizeof(cstr2[16] cstr2[15]=\0)=" << sizeof(cstr2) << endl; //16 是定义char字符数组类型时确定的字节数
	cout << "strlen(cstr2[16] cstr2[15]=\0)=" << strlen(cstr2) << endl; //5 char字符个数不包括'\0'(遇'\0'停止查找)
	cout << cstr2 << endl; //烫烫烫烫烫烫烫 局部非静态变量未全部初始化时为随机值 共有0~14共15个字节 输出7个烫是14个字节?

	wchar_t cstr4[20];
	cstr4[5] = '\0';
	cout << sizeof(cstr4) << endl; //40 是定义宽字符数组类型时确定的字节数 宽字节
	cout << wcslen(cstr4) << endl; //5 宽字符个数不包含'\0' (遇'\0'停止查找)
	cout << cstr4 << endl; //0042F3A8 是个16进制数 随机值 wchar_t数组咋不在控制台窗口输出烫屯的中文字符了?

	int narr[16];
	cout << "sizeof(int narr[16])=" << sizeof(narr) << endl; //64 是定义整型数组类型时确定的字节数

	char cstr3[] = "";
	cout << "sizeof(char cstr3[]='' =" << sizeof(cstr3) << endl; //1 包括'\0'终止符 是定义char字符数组类型时确定的字节数
	cout << "strlen(char cstr3[]='' =" << strlen(cstr3) << endl; //0 char字符个数不包括'\0'
	cout << cstr3 << endl; //输出空

	wchar_t cstr6[] = L"";
	cout << "sizeof(wchar_t cstr6[]='' =" << sizeof(cstr6) << endl; //2 包括'\0'终止符(此时按宽字节存储) 是定义宽字符数组类型时确定的字节数
	cout << "strlen(wchar_t cstr6[]='' =" << wcslen(cstr6) << endl; //0 wchar_t字符个数不包括'\0'终止符
	cout << cstr3 << endl; //输出空

	char* cstr5 = new char[16];
	cstr5[5] = '\0';
	cout << sizeof(cstr5) << endl; //4 是定义指向字符的指针类型时确定的字节数
	cout << strlen(cstr5) << endl; //5 char字符个数不包括'\0'
	cout << cstr5 << endl; //屯屯屯屯屯屯屯 局部非静态变量未全部初始化时为随机值 共0~14共15个字节 输出7个屯是14个字节?
	delete []cstr5;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值