C语言中sizeof和strlen

通过几个题来加深对sizeof 和 strlen的理解
题目一

#include <stdio.h>
int main()
{
    char str[] = "hello CSDN"; //注意这里存放了'\0'
    printf("%d %d\n", sizeof(str), strlen(str));
	return 0;
}

运行结果 11 10
分析:首先将hello CSDN的内容存放在字符数组中(C语言没有专门用来储存字符串的类型 我表示不理解)
接下来 我们要知道
sizeof(str):获取数组的总大小,11个元素,每个元素占1个字节,因此总共是11个字节(‘\0’也算)
strlen(str): 获取字符串中有效字符的个数,不算’\0’,因此总共10个有效字符

题目二

int main()
{
	char acX[] = "abcdefg";
	char acY[] = { 'a','b','c','d','e','f','g' };
	printf("%zd %zd\n", sizeof(acX), sizeof(acY));
	printf("%zd %zd\n", strlen(acX), strlen(acY));
	return 0;
}

在这里插入图片描述
重点理解strlen是计算字符串中有效字符的个数,不计算’\0’
第十八行代码没有储存’\0’导致第二十行代码输出的不是理想的值,而是一个随机值
嗷嗷 顺便说一下,sizeof和strlen的返回类型都是sizeof_t,所以都要用%zd来打印

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值