C语言中字符数组的长度和大小详解
创作时间:
作者:
@小白创作中心
C语言中字符数组的长度和大小详解
引用
CSDN
1.
https://blog.csdn.net/m0_62778602/article/details/144435059
在C语言中,字符数组的长度和大小是两个不同的概念,它们分别由
strlen
函数和sizeof
运算符计算。本文将通过具体的问题抛出、代码示例和运行结果,详细解释字符串数组的长度和大小如何决定,以及在定义时指定长度对字符串大小和长度的影响。
问题抛出
- 字符串数组的长度如何决定?
- 长度(Length):由
strlen
函数计算。它返回字符串的实际字符数,不包括结束符\0
。例如: - 对于
strlen(arr)
,返回的是 5。 - 对于
strlen(arr1)
,同样返回 5,尽管arr1
没有自动添加结束符。
- 字符串数组的大小如何决定?
- 大小(Size):由
sizeof
运算符计算。它返回数组在内存中占用的总字节数,包括所有字符和结束符\0
。例如: - 对于
char arr[] = "kuuga";
,sizeof(arr)
返回 6。 - 对于
char arr1[] = {'k', 'u', 'u', 'g', 'a'};
,sizeof(arr1)
返回 5。
- 字符串定义的时候,指定了长度,对字符串的大小长度有何影响?
- 当定义一个字符数组并指定其大小时,例如
char arr2[99] = "kuuga";
,数组的大小是 99 字节。即使仅初始化了 "kuuga",整个数组仍保留 99 字节的内存空间。此时: sizeof(arr2)
返回 99,而strlen(arr2)
返回 5,因为即使arr2
中的有效字符只有 5 个,剩余的空间仍然保留在内存中。
注意事项
char arr[] = "kuuga";
如果这样定义字符串会自动在末尾添加\0
- 字符串大小容易被左右,长度是实打实的东西
#include <stdio.h>
#include <string.h>
int main() {
char arr[] = "kuuga"; // 自动生成大小,包含结束符
char arr1[] = {'k','u','u','g','a'}; // 手动指定字符
printf("第一个字符串的大小(arr[]): %zu 字节\n", sizeof(arr));
printf("第一个字符串的长度(arr[]): %zu 字符\n", strlen(arr));
printf("第二个字符串的大小(arr1[]): %zu 字节\n", sizeof(arr1));
printf("第二个字符串的长度(arr1[]): %zu 字符\n", strlen(arr1));
char arr2[99] = "kuuga"; // 指定数组大小,自动包含结束符
char arr3[99] = {'k','u','u','g','a'}; // 指定数组大小,只包含字符
printf("\n指定数组大小后:\n");
printf("第一个字符串的大小(arr2[]): %zu 字节\n", sizeof(arr2));
printf("第一个字符串的长度(arr2[]): %zu 字符\n", strlen(arr2));
printf("第二个字符串的大小(arr3[]): %zu 字节\n", sizeof(arr3));
printf("第二个字符串的长度(arr3[]): %zu 字符\n", strlen(arr3));
return 0;
}
运行结果:
第一个字符串的大小(arr[]): 6 字节
第一个字符串的长度(arr[]): 5 字符
第二个字符串的大小(arr1[]): 5 字节
第二个字符串的长度(arr1[]): 5 字符
指定数组大小后:
第一个字符串的大小(arr2[]): 99 字节
第一个字符串的长度(arr2[]): 5 字符
第二个字符串的大小(arr3[]): 99 字节
第二个字符串的长度(arr3[]): 5 字符
--------------------------------
Process exited after 0.04958 seconds with return value 0
请按任意键继续. . .
热门推荐
光电信息科学与工程专业属于什么大类 哪个门类
打造世界级交通管理,湖北宜昌开展“敲门行动”溯源电动自行车违法
掌握这15种模式后,力扣(LeetCode)不再难
怎样增加腿部力量保护膝盖
天津医科大学发现,中国血脂异常的人,这么吃,可降低心血管代谢疾病风险
职业教育“产教融合”助力高质量就业
24个音乐素材网站推荐,剪辑新人必备,建议收藏!
睡醒后腰酸背痛?这些睡姿正在悄悄伤害你
七杀宫格女命详解:性格、命运、婚姻、财运全解析
如何合法有效地准备夫妻共同财产证据
小小防护栏带来大大安全感
河南焦作云台山-神农山-青天河景区攻略,太行山水间的绝美画卷
太阳能热水器清洗方法及保养注意事项
二维码在移动应用市场中的应用指南
用羊角锤防身犯法吗?法律解读与实务分析
一种船舶除锈高压水射流系统及其工作方法与流程
如何处理维修基金的相关问题?这类问题有哪些解决办法?
Excel制作准考证的详细步骤和技巧
别再谈“腐”色变!食品防腐剂大揭秘!
医保一年要交多少钱?医保的缴费比例是多少
《我的世界》新增六项功能 将放弃传统大型夏季更新
探索风险效用函数在投资决策中的应用与影响
如何用软件测试门禁
煤气罐使用年限对安全影响的研究
延胡索的功效与作用
延胡索:传统中药中的止痛良药
利拉德加盟雄鹿:这笔交易对球队战力和联盟格局产生了怎样的影响?
英国剑桥大学:800年辉煌历程与卓越成就
合同住宿条款:明确双方权益,保障双方利益
新员工培训的五个步骤