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
热门推荐
中老年人吃什么蛋白粉提高免疫力
锐龙是否适配 DDR3 内存?性能及兼容性关键节点解析
如何制定有效的测试计划内容?【附详细步骤】
Pytest精通指南:Parametrize数据驱动详解
4000万网友“云监工”,这里的钓鱼慢直播火了!“中国钓王”邓刚:我也想去
花20元买河虾袋子值4.5元 水产塑料袋成了“消费刺客”?
停职留薪期间的工资发放标准是怎样的
甘蓝型油菜新品种首次在北方寒旱盐碱区安全越冬
2024年苏州城市学院录取分数线是多少?全国各省最低分是439
鸦片战争的导火索:一场改变中国命运的条约
自编码器在降维中的原理与算法
在长沙,每天有几万游客去橘子洲头看望毛主席,包括好多外国友人
指示剂溶液检测
研究进展 | 不同原料的降血脂功效及作用机制
海南林下种植何首乌:前景展望与技术研究
没有住院能申请工伤认定吗
李可染生平
去黄洗头水正确用法+护色效果须知!漂染头发后要即时用?
冬天要多吃此肉,比鸡肉便宜,比牛羊肉鲜美,营养滋补,好吃不胖
孩子发烧,父母都怕!呼吸科专家:有种情况,不及时治疗,容易留后遗症
头痛的原因有哪些检查
股票能继承吗?法律权威解答
如何对人工智能道德规制
碳酸钙D3片正确吃法
小区电梯收费引热议:乘梯需刷卡付费,律师解读收费标准合理性
走进龙湖古寨,品味潮汕风情,感受古建筑魅力无限!
梦到离婚:解析潜意识中的情感困惑
布达拉宫有世界一半的黄金,这座世界最高宫殿,到底有多神秘?
不拆台不扫兴……这届年轻人用代码“治愈”孤独
郑州大学生夜骑开封引发全城联动:景区免费开放,警方发布安全提示