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
请按任意键继续. . .
热门推荐
孕期草莓放心吃!营养好处多,但要注意这几点
什么投资方式更具稳定性?这种稳定的投资方式如何保障收益?
自动驾驶汽车的测试与验证:确保安全上路的关键步骤
使用 Excel 新函数 Groupby 快速分组
加氯机自动控制方式
除斥期间的含义、特点及适用范围
车厘子品种大盘点:甜蜜滋味各不同
“百病皆由脾胃衰而生”!脾胃娇养不只是说说而已,实战攻略来袭
2亿人共情共进,产城人共生共荣
最美海边沙滩,旅游打卡圣地,您更喜欢哪个
中国历史上的一大毒瘤:门阀士族
体检抽完血要吃点什么补补
杭州西溪湿地开展青少年观鸟妙趣游
鲁班尺背后的玄机:传统与科学的完美结合
开户是什么:银行开户流程包括哪些步骤?
略谈管理会计的发展趋势
马尔泰·若曦:《步步惊心》中的穿越女主人公
冯姓文化:从古至今的迁徙与发展
新疆两所211大学对比:石河子大学 vs 新疆大学,哪个更适合你?
四年级下册数学开学前必背十大考点总结
31年前的《香魂女》,揭露了农村女性的畸形婚姻,在国外获得大奖
《兽兵卫忍风帖》:暴力美学与忍者传奇的完美融合
怎样种辣子才能高产?
糖尿病手术治疗可靠吗
新质生产力在江苏 | 连云港:向"新"发力 逐"绿"而行
双目相机标定与点云生成:从原理到实现
德州8条精品旅游线路出炉,文化体验、古韵寻踪、清凉畅玩应有尽有
上火了,牙疼,溃疡喝蜂蜜降火?上火喝蜂蜜水有效吗?
如何安度脑血管疾病“魔鬼季”?
宝宝取名字简单寓意好的名字,给孩子一生的祝福