sizeof与strlen的区别与应用情况

本文深入解析C语言中sizeof运算符与strlen函数的区别。sizeof可计算类型或表达式的字节大小,甚至能处理函数,而strlen仅用于测量以null终止的字符串长度。文章通过示例代码展示了两者在不同场景下应用的具体差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sizeof与strlen的区别:
1.sizeof为一个运算符,可以以类型,函数做参数。而strlen是一个函数,只能用char*做参数,且该char数组必须是以’/0’结尾的,同时是函数引用时就需要头文件。
sizeof以类型为参数

int main()
{

	printf("%d\n", sizeof(char));
	printf("%d\n", sizeof(short));
	printf("%d\n", sizeof(int));
	printf("%d\n", sizeof(long));
	printf("%d\n", sizeof(float));
	printf("%d\n", sizeof(double));

	system("pause");
	return 0;

}

输出结果为1,2,4,4,4,8

2.sizeof计算声明后字符串所占的内存数(字节大小),不是实际长度。即包含‘\0’的大小。而strlen求字符串长度不包含‘\0’的长度。
具体代码如下;

```int main()
{

	char str[20] = "hello";

	printf("strlen: %d\n", strlen(str));

	printf("sizeof: %d\n", sizeof(str));

	system("pause");
	return 0;

}
    //结果显示为:
	//strlen : 5
    //sizeof : 20

3.数组做sizeof的参数不退化,传递给strlen就退化为指针了。
数组传递给strlen的本质为将数组内第一个元素的地址传递给strlen。

ps:这几天在论坛上看文章发现自己第一篇博客的一个问题这里修正一下。
static修饰函数:表面显示出来和修饰全局变量是相同的,都是改变作用域,准确的说是缩小了作用域;但本质上修饰函数是改变了函数的链接属性,具体是由外部链接属性转变为内部链接属性。

这次就先分享这些,如有错误希望大家多多指正。共同学习,共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值