sizeof和strlen的区别与应用
一丶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: &数组名,&数组名也代表这整个函数的地址