C语言中字符数组的初始化与注意事项

本文详细解析了C语言中字符数组的三种初始化方法:直接指定长度和值、根据赋值确定长度、使用字符串初始化。并通过实例展示了不同初始化方式下数组长度的差异,解释了为何字符串初始化的数组长度会比预期多1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C语言中字符数组的初始化有三种常见的方法:

  char a[5] = {'a','b','c','d','e'};
  char c[] = {'a','b','c','d','e'};
  char b[] = "abcde";

第一种初始化的方式,在定义字符数组时直接给出数组的长度和数组的值;

第二种初始化的方式,在定义数组时并未给出数组的长度,而是根据后面的赋值,在编译器编译时为数组固定长度。

第三种初始化的方式,利用字符串来为字符数组赋初值,这种方式在定义是无需指定数组的长度。不过这种方式不同于前两种。

可以通过下面的例子来看:

#include <stdio.h>

int main()
{
    int i = 0;
    char a[5] = {'a','b','c','d','e'};
    char b[] = {'a','b','c','d','e'};
    char c[] = "abcde";

    printf("sizeof(a):%ld\nsizeof(b):%ld\nsizeof(c):%ld\n",sizeof(a),sizeof(b),sizeof(c));

    return 0;
}

运行的结果如下:

sizeof(a):5
sizeof(b):5
sizeof(c):6

可以看出最后一种初始化的数组长度与前两种不一样,这是为什么呢?原因在于那个初始化的字符串上面。一个字符串在计算机中用‘\0'来表示字符串结束。所以我们看到的"abcde",在计算机中的表示是啊'a' 'b' 'c' 'd' 'e' '\0'。事实上最后一种初始化得到的字符数组的大小为初始化字符的个数加上1。因为’\0‘作为数组的最后一个元素,但是该字符在输出时并不显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值