sizeof运算符和strlen的区别

sizeof运算符返回一个对象或者类型所占的内存字节数,
strlen 返回的是字符串或字符数组有效元素的个数;

但计算字串时,sizeof运算符会将字符串结束标志计算在内,
而strlen 只是返回有效元素的个数,即’\0’前字符的个数。
例子如下:

#include<stdio.h>
#include<string.h>
int main()
{
	char b[] = { 'a', 'b', 'c', 'd' };
	printf("sizeof(b)=%d\n", sizeof(b));
	printf("strlen(b)=%d\n", strlen(b));


	char b1[] = { 'a', 'b', 'c', 'd' ,'\0'};
	printf("sizeof(b1)=%d\n", sizeof(b1));
	printf("strlen(b1)=%d\n", strlen(b1));

	char b2[] = "IT crowd";
	printf("sizeof(b2)=%d\n", sizeof(b2));
	printf("strlen(b2)=%d\n", strlen(b2));
	return  0;
}

分析:
字符数组b存放四个字符,
sizeof计算内存大小,四个字符就占四个字节,返回4;
strlen计算有效字符个数,它将字符串结束标志’\0’前的所有字符视为有效字符,b中无 ‘\0’,不确定在何处结束,所以返回一个随机数。

字符数组b1比b多了一个字符串结束标志’\0’,
sizeof计算内存大小,五个字符就占五个字节,返回5;
strlen计算有效字符个数,’\0’前有四个字符,所以返回4.

字符串b2中有八个字符,字符串末尾自动会加上一个字符串结束标志’\0’,共计九个字符。
sizeof计算内存大小,九个字符就占九个字节,返回9;
strlen计算有效字符个数,’\0’前有8个字符,所以返回8.

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值