(C语言)字符数组初始化与sizeof()与strlen()

权当笔记。

看官能看懂最好,看不懂的话可以拿源码去运行下。

#include<stdio.h>
#include<string.h>

/*
"he"看着只有两个字符,但是只用2个字节是没法存下去的。
如果是ch3[2]="he",这样会报错。因为没有给\0留地方
得用ch3[3]="he";

ch2[]={'h','e'};这种定义方法相当于就是放了一个'h'和一个'e'在ch2后面没有主动放\0,所以空间占用两个字节
但是strlen()是读到\0才终止的,然后计算\0之前的字符个数,所以strlen(ch2)的结果是没法预测的。

ch1[]="he",这种定义方式会申请3个空间,第一个放'h',第二个放'e',第三个放'\0';
*/
int main()
{
	char ch1[]="he";//占用3个字节  字符长度为2
	char ch2[]={'h','e'};//占用2个字节  字符长度不确定(看什么时候读到\0)
	char ch3[3]="he";//占用3个长度,字符长度为2
	
	printf("%d ",sizeof(ch1));//3
	printf("%d ",sizeof(ch2));//2
	printf("%d \n",sizeof(ch3));//3
	
	printf("%d ",strlen(ch1));//2
	printf("%d ",strlen(ch2));//不确定
	printf("%d \n",strlen(ch3));//2
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值