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

1.char buf[10] = "";

对于 case 2,我认为buf[0]应该是' 'buf[1]应该是'\0',从buf[2]buf[9]将是随机内容.对于 case 3,我认为buf[0]应该是'a'buf[1]应该是"\0",从buf[2]buf[9]将是随机内容.

对吗?

对于情况1,buf-buf[0] == '\0'中将是什么,buf[1]buf[9]将是随机内容?

推荐答案

这不是初始化数组的方式,而是用于:

  1. 第一项声明:

    char buf[10] = "";
    

    相当于

    char buf[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    
  2. 第二个宣言:

    char buf[10] = " ";
    

    相当于

    char buf[10] = {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0};
    
  3. 第三项宣言:

    char buf[10] = "a";
    

    相当于

    char buf[10] = {'a', 0, 0, 0, 0, 0, 0, 0, 0, 0};
    

如您所见,没有随机内容:如果初始值设定项较少,则数组的其余部分初始化为0.即使数组是在函数内声明的,情况也是如此.

C++相关问答推荐

为什么可以通过指向常量int的指针间接地改变整数的值?

为什么可以在typedef之前使用typedef d struct 体?

如果包含路径不存在,我的编译器可以被配置为出错吗?(GCC、MSVC)

为什么net/if.h在ifaddrs.h之前?

C lang:当我try 将3个或更多元素写入数组时,出现总线错误

N的值设置为0或1(未定义的行为),而我正在try 学习realloc和Malloc的用法

Sizeof(&Q;字符串&Q;)的正确输出是什么?

无法在OpenGL上绘制三角形

一旦运行长度超过2,编译器是否会优化";strnlen(mystring,32)>;2";以停止循环?

我的C函数起作用了,但我不确定为什么

#定义SSL_CONNECTION_NO_CONST

为什么未初始化的 struct 的数组从另一个数组获取值?

Caesar密码调试:输出文本末尾的问号和随机字符

我在C程序的Flex/Bison中遇到语法错误

S,在 struct 中创建匿名静态缓冲区的最佳方式是什么?

我正在使用c学习数据 struct ,在学习堆栈时,我试图将中缀转换为后缀,并编写了这段代码.代码未给出输出

未使用sem_open正确初始化信号量

即使客户端不发送数据,也会发生UNIX套接字读取

我的代码可以与一个编译器一起使用,但不能与其他编译器一起使用

如何找出C中分配在堆上的数组的大小?