包含多个值的int对象以及如何将它们传递给函数

时间:2017-02-08 04:58:03

标签: c++ xcode

请让我在这个问题前面说明我是一个绝对的C ++新手而且我只是精通R。另外,我在Xcode中工作。

  1. 假设我创建了一个名为'answers'的int对象。最初,它设置为int。在为答案[0],答案[1]等分配值之后,它仍然是int还是由于我添加了多个值而变为其他值?

    int answers[4];
    answers[0] = 8;
    answers[1] = 6;
    answers[2] = 7;
    answers[3] = 5;
    
  2. 假设我想将'答案'传递给用户定义的函数(请参阅下面的代码)。我的问题是在行中,cout<<“你输入的第一个值...”,我得到一个错误,说'Subscripted value不是数组,指针或向量'。然后,在行中,showAnswers (答案);,我收到错误'没有匹配函数来调用'showAnswers''。我在这里做错了什么?我的第一个猜测是'答案'不再是int,但我不知道它是什么会是。

  3. void playGame(int input){
       cout << "The first value you entered was: " << input[0];
    }
    
    int main() {
    
        int answers[4];
        answers[0] = 8;
        answers[1] = 6;
        answers[2] = 7;
        answers[3] = 5;
    
        showAnswers(answers);
    }
    

1 个答案:

答案 0 :(得分:2)

需要考虑两件事:

首先,正如Igor的评论所述,answers不是int,而是4 int个值的数组。

其次,playGame的参数是int而不是int值的数组,因此添加下标([0])无效。

您必须为数组中的每个值单独调用playGame,或者修改函数以接受数组引用或指向数组的指针。

在宏观方案中,这些解决方案都不适合大型项目,因为它们可能容易出现Cpp核心指南中所述的问题:http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#a-nameri-arrayai13-do-not-pass-an-array-as-a-single-pointer