一篇文章阐明“sizeof”与“strlen“的深入比较

1.sizeof与strlen的定义

sizeof是计算括号内内存大小的操作符,即多少字节,常见用法为计算数值或数值类型的内存大小。

#include<stdio.h>
int main()
{
	int c = 10;
	printf("%d\n", sizeof(c));
	printf("%d\n", sizeof c);
	printf("%d\n", sizeof(int));
	return 0;
}

由于int类型的类型内存大小为4个字节,则运行都为4而strlen为一个计算字符串长度大小的函数,它的底层逻辑是在内存上由起始点向后检索直到\0,所以可能存在越界查找,停下来然后计算。

int main()
{
	char arr[100] = "abcdef";
	printf("%d", strlen(arr));
	
	return 0;
}

char类型的数组内存储了一个字符串,而字符串结尾通常有一个看不见的\0结尾。

可理解为a,b,c,d,e,f,\0,所以长度为6.运行如下:

2.与数组结合应用理解。

创建两个char类型的数组,区分字符数组和字符串数组,结合以上定义。

int main()
{
	char arr1[3] = { 'a', 'b', 'c' };
	char arr2[] = "abc";
	printf("%d\n", strlen(arr1));//
arr1数组名单独在括号里代表整个数组,而字符数组内无\0,则打印一个随机值
	printf("%d\n", strlen(arr2));
字符串则如1介绍

	printf("%d\n", sizeof(arr1));
一个char类型数据大小为1,则应该为3
	printf("%d\n", sizeof(arr1));
一个char类型数据大小为1,则应该为3
	return 0;
}

数组名单独放在括号内,代表整个数组内容。

3.与指针地址结合理解

sizeof中地址即指针一律平等,不要门缝里看指针把指针看扁了。

数组名的意义:
1. sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。
2. &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。
3. 除此之外所有的数组名都表⽰⾸元素的地址。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强sir的世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值