开发者社区 问答 正文

C char数组初始化

我不确定初始化后通过以下方式在char数组中会有什么。

  1. char buf[10] = "";
  2. char buf[10] = " "; 3。char buf[10] = "a";

对于情况2,我认为buf[0]应该是' ',buf[1]应该是'\0',并且从buf[2]到buf[9]将是随机内容。对于情况3,我认为buf[0]应该是'a',buf[1]应该是'\ 0',并且从buf[2]到buf[9]将是随机内容。

那是对的吗?

对于情况1,将发生什么buf?buf[0] == '\0'而从buf[1]到buf[9]将会是随机内容? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 11:03:45 417 分享 版权
1 条回答
写回答
取消 提交回答
  • 这不是初始化数组的方式,但适用于:

    第一个声明:

    char buf[10] = ""; 相当于

    char buf[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 第二条声明:

    char buf[10] = " "; 相当于

    char buf[10] = {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0}; 第三个声明:

    char buf[10] = "a"; 相当于

    char buf[10] = {'a', 0, 0, 0, 0, 0, 0, 0, 0, 0}; 如您所见,没有随机内容:如果初始化程序较少,则使用初始化数组的其余部分0。即使在函数内部声明了数组,也是如此。

    2020-02-08 11:03:59
    赞同 展开评论
问答标签:
问答地址: