C语言中字符数组的长度和大小详解
创作时间:
作者:
@小白创作中心
C语言中字符数组的长度和大小详解
引用
CSDN
1.
https://m.blog.csdn.net/m0_62778602/article/details/144435059
在C语言中,字符数组的长度和大小是一个容易混淆的概念。本文将通过具体的问题抛出、代码示例和运行结果,详细解释字符串数组的长度和大小是如何决定的,以及在定义时指定长度对字符串大小和长度的影响。
问题抛出
- 字符串数组的长度如何决定?
- 长度(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
请按任意键继续. . .
本文原文来自CSDN
热门推荐
如何分析房产市场的各类楼盘?这种分析怎样帮助购房者选择?
如何查询ETF的持仓及基金持仓情况
戒酒后脸部的变化
LDO和DC-DC的区别、应用及优缺点详解
大蒜的十大健康功效:从抗菌到抗癌,发芽后还能吃吗?四种快速剥蒜技巧
别再乱做按摩了,真的可能要命!尤其这几类人
优化电动汽车电池组的散热
“妈妈,谢谢您的爱”!
「中国当代书画名家」画家王志安作品赏析
周易起名:揭秘姓名测试打分与生辰八字起名的智慧
内衣专用洗衣液和普通洗衣液的区别?
清热解毒,凉爽开胃,苦菊凉拌给你不一样的味蕾享受,解暑降火
如何写记叙文
隐私计算:保护数据隐私的利器
如何获得父母的认可和尊重?
2025年薪资证明模板的法律要素解析及场景化应用
剑道的历史:从平安时代到2025年的千年传承
山东杨家埠:妙手匠心寄祝福
干货|突发负面舆情,如何进行应对?结合实际案例分享几个实操公关技巧
如何让长期吸烟导致的牙齿变白?
深入了解基本面选股条件:精準挑選高潛力股票的全方位指南
养殖场靠120元钓费加抓鸡活动,竟年赚20万以上?
大学生平板电脑选购指南
如何数据化管理客户服务
文化艺术之都莫斯科,值得安排一次深度游
保持唇部水润的秘诀
重庆丰都:种质创新带动肉牛产业转型升级
7个偏光镜(CPL)的终极用法
买房必看:户型选择五大功能区规划要点
球风不同风格不同 哈登得分能力真不如欧文?