栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符串vs字符数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串vs字符数组

今天是复习到C语言的字符串和字符数组的大小长度比较的内容

字符串和字符数组的表现形式

同样是char类型,字符串和字符数组在表现形式上就有很大的差异

char a[] = "ABCDEF";
char b[] = { 'A','B','C','D','E','F' };

例如在这段简单的代码中,char a[]是字符串,char b[]是字符数组,虽然两个都是char类型,也由相同的字符组成,但是他们的大小,长度都是不一样的,这是由于计算机在对于二者的处理是不同的,如果是字符串,则计算机会自动在其最后加入''表示结束,所以在计算机中真正显示的应该是char a[]="ABCDEF",但是在字符数组中,则不会添加作为终止符,如果需要求其长度,要么对字符数组进行初始化,例如char b[10]={'A','B','C','D','E','F'},要么手动添加作为终止,例如char b[10]={'A','B','C','D','E','F',''},否则求出来的长度是随机数值。

sizeof和strlen

从表面上看,sizeof求的是表面大小,所见即所得

char a[] = "ABCDEF";
char b[] = { 'A','B','C','D','E','F'};
printf("%d,%dn", sizeof(a), sizeof(b));

上述代码的运行结果是7,6,大家可以发现,由于a[]和b[]虽然看起来都是六个字符,但是输出的大小有一个字节的误差,这是因为系统会在字符串后面自动添加,因此虽然a[]看起来是六个字符,实际上是七个,而由于字符数组并没有系统添加的,因此是六个。

	char a[] = "ABCDEF";
	char b[] = { 'A','B','C','D','E','F'};
	printf("%d.%d", strlen(a), strlen(b));

 上述代码的运行结果是6,50,这是由于我们既没有给b[]规定大小长度,也没有在里面添加作为终止,因此系统则一直寻找,直到找到才会输出此数组大小。

    char a[] = "ABCDEF";
	char b[] = { 'A','B','C','D','E','F',''};
	printf("%d,%dn", sizeof(a), sizeof(b));
	printf("%d.%d", strlen(a), strlen(b));

经过修改,此时代码的运行结果为

7,7

6,6

通过上面代码我们可以发现,sizeof和strlen都可以求得字符串和字符数组的大小,但是strlen在字符数组中受的限制,sizeof在计算长度的时候会将作为字符一起计算在内,个人认为如果遇到题目让比较字符串和字符数组的长度,用sizeof是更好的选择。

这就是今天的收货,over,over,欢迎指教~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034664.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号