深刻了解C语言中的sizeof()和strlen()

本文详细探讨了C语言中sizeof和strlen的区别和应用,指出sizeof用于计算数据类型或对象占用的字节数,而strlen则用于计算字符串长度。特别地,数组名在sizeof中代表整个数组的大小,而在strlen中则需注意字符串结束符的影响。文章通过实例分析了各种情况下的计算结果,帮助读者理解两者在实际编程中的运用。

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

一丶sizeof和strlen的区别

  • sizeof()
    sizeof主要是用来计算操作数所占空间所占的字节数大小或者是字符分配的大小,是c语言常见的一种操作符,并不是一个函数。sizeof()的参数可以是数组,指针,函数,类型,对象等。
  • strlen()
    strlen()函数是计算字符串的长度的一种函数,属于是c语言的库函数。strlen的参数必须是字符型指针(char *)。

二丶sizeof和strlen的应用以及注意点

  • sizeof

sizeof()的参数是数组名时并且单独对数组名使用时,数组名就不代表该数组的第一个元素地址了,而是代表整个数组的地址。如:
int arr = [0,1,2,3,4]
int a =sizeof(arr)

如上,arr此时代表的是整个数组。
sizeof是通过类型直接算出大小,并不会计算sizeof内部的表达式。
比如 int a = 0; sizeof(a)为4字节或八字节,因为a的类型是整形类型,sizeof并不是计算a的大小,而是a的类型int的大小。因为位数不同,所以所占的字节也不同,32位为4字节,64位为8字节。

  • strlen

strlen()的参数是 const char ,因为有const,所以strlen函数接受的参数必须是一个常变量,是不可改变的。strlen主要计算字符串长度,遇到\0才会停止,起始位置应该从字符串的起始位置开始直到\0才停止。
注意:\0不计算大小,计算的是\0前面的大小

三丶数组名的意义

这里浅浅的说下数组名的意义,数组名在通常情况下都代表该数组的第一个元素的地址。
但是有两个例外
1:当sizeof单独和数组名一起时,数组名代表的是整个数组如上所说的sizeof(arr),此时sizeof计算的是arr整个数组的大小。
2: &数组名,&数组名也代表这整个函数的地址

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值