C++ 访问数组之外的元素的结果

C++ 访问数组之外的元素的结果,c++,arrays,C++,Arrays,在招聘过程中,我得到了一个有几个问题(多选)的测试,这是其中之一: 当您试图编译并运行包含此代码片段的程序时,会发生什么情况 char str[] = "abc"; char c = str[3]; a) 程序结果可能是意外的 b) 程序无法编译 c) 程序可能会遇到运行时错误 d) 变量c将存储未知值 e) 变量c将存储'\0' 答案是 E:变量c将存储'\0' 理由是: char str[] = "abc"; 完全等同于: char str[] = {'a', 'b', 'c', '

在招聘过程中,我得到了一个有几个问题(多选)的测试,这是其中之一:

当您试图编译并运行包含此代码片段的程序时,会发生什么情况

char str[] = "abc";
char c = str[3];
  • a) 程序结果可能是意外的

  • b) 程序无法编译

  • c) 程序可能会遇到运行时错误

  • d) 变量
    c
    将存储未知值

  • e) 变量
    c
    将存储
    '\0'

  • 答案是

    E:变量c将存储'\0'

    理由是:

    char str[] = "abc"; 
    
    完全等同于:

    char str[] = {'a', 'b', 'c', '\0'};
    
    因为在声明字符串时,编译器会放入一个
    \0

    该数组有4个元素,编号为
    [0]
    [3]


    那个数组的元素
    [3]
    有值
    \0

    @Cyber:Huh,什么?字符串“abc”包含元素
    {'a'、'b'、'c'、'\0'}
    。元素
    [3]
    被很好地定义为
    \0
    。这是一个多项选择题测试。@阿贝伦基你说得对,我有个屁。
    str
    的长度确实是4,因此
    [3]
    是一个有效的索引。@user3365101:如果这对你来说是一个“令人惊讶的难题”,请不要申请编程工作。再上一节课,或者自己练习,直到思考这些成为第二天性。我不是批评你问问题。欢迎您在这里提问和学习。然而,如果这能代表你的知识,我认为申请工作或实习不是一个好主意。我认为实习生应该超出这个水平。有评论说这将导致UD,而那个家伙非常自信,我对自己的编程技能表示怀疑。。。谢谢你回答这个显而易见的问题。