C++ 数组项作为函数参数的引用

C++ 数组项作为函数参数的引用,c++,arrays,pass-by-reference,C++,Arrays,Pass By Reference,可能是一个简单的问题,但我总是对引用和数组作为参数感到有点困惑。下面的C++是有效的吗?也就是说,在调用function1之后,如果代码段出现错误,array[0]是否具有值10 void function1(int &data) { data = 10; } void function2(void) { int array[2]; function1(array[0]); } 感谢您的澄清。是的,会的,这是非常有效的代码 C++中的下列有效性是什么?p> 对 也就是

可能是一个简单的问题,但我总是对引用和数组作为参数感到有点困惑。下面的C++是有效的吗?也就是说,在调用
function1
之后,如果代码段出现错误,
array[0]
是否具有值
10

void function1(int &data)
{
  data = 10;
}

void function2(void)
{
  int array[2];

  function1(array[0]);
}

感谢您的澄清。

是的,会的,这是非常有效的代码

C++中的下列有效性是什么?p> 对

也就是说,在调用function1之后,如果代码段出现错误,数组[0]的值是否为10

void function1(int &data)
{
  data = 10;
}

void function2(void)
{
  int array[2];

  function1(array[0]);
}


尝试编译、运行和实验。然后问下一个稍微好一点的问题。

到底是什么阻止了你自己测试这个?我实际上认为告诉人们编译和实验是错误的。UB的本质是在每个实现上运行不同,或者在月球的不同阶段运行不同,如果我不知道它是定义良好的行为,那么认为今天测试它时有效的东西明天仍然有效是一个坏主意。它编译吗?当然,你可以测试一下。它有效吗?“最肯定的不是。”DeadMG:为什么告诉人们编译和实验是错误的?我什么时候说过如果程序编译和运行良好,那么它不是UB?还要注意的是,除了两个“是”之外,我还说了它。@DeadMG:另外,你说它编译吗?当然,你可以测试一下。它有效吗?绝对不是。绝对不是吗?你知道这意味着什么吗?@Nawaz:这意味着你绝对不能测试某个东西,看它是否有效,因为它可能看起来有效,但实际上并不有效。