sizeof跟strlen的用法及差异

sizeof是一个操作符,不是函数;

而strlen是一个库函数;

sizeof是计算所占内存空间的,不管你内容是什么,只要知道占多少内存,

而strlen是跟内容有关的,它是计算字符串长度的(字符数组也是可以的),其核心是统计字符串中'/0'前有多少字符,一定要找'/0',所以它要关注内容,

下面我们通过几道题来讲解,

这里的4/8所代表的是地址在不同编译器下所占字节不同,有的是4,有的是8

验证一下输出,

下面这个代码大家来练习一下,

	char arr[] = { 'a','b','c','d','e','f' };

	printf("%d\n", sizeof(arr));
	printf("%d\n", sizeof(arr + 0));
	printf("%d\n", sizeof(*arr));
	printf("%d\n", sizeof(arr[1]));
	printf("%d\n", sizeof(&arr));
	printf("%d\n", sizeof(&arr + 1));
	printf("%d\n", sizeof(&arr[0] + 1));

第一个很简单,计算的是整个数组所占字节数,即6,

第二个arr代表的是首元素地址,+0代表首元素地址的大小,即4/8

第三个对arr首元素地址解应用,就是在问a[0]所占字节大小,即1,

第四个arr[1]是第二个元素,即1

第五个&arr代表的是整个数组的地址,也是地址,即4/8

第六个&arr+1是跳过整个数组后的地址,也是地址,即4/8

第七个&arr[0]是首元素地址,首元素地址加一也是地址,就是4/8

下面我们来看strlen,同样通过题目来讲解,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值