【问题标题】:Array entry as references function argument数组条目作为引用函数参数
【发布时间】:2011-10-01 14:41:15
【问题描述】:

可能很简单的问题,但我总是对引用和数组作为参数感到有些困惑。以下在 C++ 中有效吗?也就是说,如果 sn-p 完全编译,array[0] 在调用function1 之后是否具有值10

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

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

  function1(array[0]);
}

感谢您的澄清。

【问题讨论】:

  • 究竟是什么阻止了你自己测试这个?

标签: c++ arrays pass-by-reference


【解决方案1】:

是的,它会的,这是完全有效的代码。

【讨论】:

    【解决方案2】:

    以下内容在 C++ 中有效吗?

    是的。

    也就是说,如果 sn-p 完全编译,那么在调用 function1 后,array[0] 的值是否为 10?

    是的。

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

    【讨论】:

    • 我其实认为告诉人们编译和实验是错误的。 UB 的本质是在每个实现上或在不同的月相下以不同的方式运行,如果我不知道它是明确定义的,那么认为我今天测试它时有效的东西明天仍然有效是一个坏主意行为。它编译吗?当然,你可以测试一下。它有效吗?绝对不是。
    • @DeadMG:为什么告诉人们编译和实验是错误的?我什么时候说过如果程序编译运行正常,那它就不是UB了?另请注意,我说的是除了两个是的。
    • @DeadMG:另外,你说 它可以编译吗?当然,你可以测试一下。它有效吗? 绝对不是绝对不是?你知道这意味着什么吗?
    • @Nawaz:这意味着您绝对不能测试某些东西是否有效,因为它可能看起来有效但实际上不是。
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多