返回参考

时间:2018-03-26 12:07:38

标签: c++ c++11

  1. 我对以下代码的预期输出为" 1 -1 3 4 5 6"。 (arr[1]=2应更改为arr[1]=-1)。当我运行此代码时, 什么都没有改变,我无法理解为什么。

  2. 如果参数"寻找"会有什么不同?将被"发现"按价值而不是按参考来运作? 当我宣布"寻求"是一个值,程序没有运行(0xC0000005)......但为什么会这样呢?

  3. #include <iostream>
    
    int& find (int arr[], int size, int& seek)
    {
        for (int i; i<size; i++) {
            if (arr[i]==seek) return arr[i];
        }
        return seek;
    }
    
    void print (int arr[], int size)
    {
        for (int i=0; i<size; i++) {
            std::cout << arr[i] << " ";
        }
        std::cout << std::endl;
    }
    
    
    int main ()
    {
        int arr[]={1,2,3,4,5,6};
        int size = sizeof arr / sizeof *arr;
        int seek=2;
    
        find (arr, size, seek) = -1;
    
        print(arr, size);
    
        return 0;
    }
    

1 个答案:

答案 0 :(得分:4)

for (int i; i<size; i++) {

您需要在此处初始化i

for (int i = 0; i<size; i++) {

至于第二部分 - 请参阅@Some程序员dude的评论