sizeof与strlen.md

**sizeof与strlen的区别: **

下面以代码的形式来解释
#include <iostream>
using namespace std;
int main()
{
	cout << sizeof(int) <<"\t"<<sizeof(double)<< endl;
	
	int x = 3;
	cout << sizeof(x) << endl;

	//cout << strlen(4) << endl;	//error: strlen只能以\0结尾的参数作为参数
	cout << strlen("abc123d") << endl;	// 系统会自动加个'\0'作为结束符

	int arr[] = { 1,2,3 };
	cout << sizeof(arr) << endl;	// 数组作为sizeof参数时,不退化
	//cout << strlen(arr) << endl;	// error:数组作为strlen的参数时,退化为指针,指针是一种普通的变量,从访问上不异与其他变量。
	//它保存的数值是整型类型,和整型数据不同的是,它指向的是一段内存地址。所以不是以‘\0’结束的字符串,所以报错

	/*

	两者区别:
	sizeof是一个操作数,而strlen是库函数
	sizeof的参数可以是数据的类型也可以是变量,而strlen的参数只能是以'\0'为结尾的字符串
	编译器在编译时期就计算出了sizeof的结果,而strlen函数必须在运行时才能计算出来
	sizeof计算的是类型所占内存的大小,而strlen计算的是字符串实际的长度
	数组作sizeof的参数不退化,而传递给strlen作参数就退化为指针了

	*/

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值