首页 > 解决方案 > 为什么 printf() 打印两个字符数组?

问题描述

我已经声明了两个简单的字符数组。在一个字符串上调用 printf() 时,会打印两个数组。为什么?

#include <stdio.h>

int main()
{
    char z[] = "The C programming language.";

    char v[2] = {'q', 'w'};

    printf("%s \n", v); 

    return 0;
}

预期结果:qw。得到的结果:qwC 编程语言。两个数组是连接的??

标签: c

解决方案


  1. 'q' 不是数组,只是整数。
  2. 初始化数组时,这两个整数存储为数组元素。

  3. 什么都没有加入。

  4. 这是未定义的行为,因为 printf 查找终止零并读取数组边界之外


推荐阅读