请让我在这个问题前面说明我是一个绝对的C ++新手而且我只是精通R。另外,我在Xcode中工作。
假设我创建了一个名为'answers'的int对象。最初,它设置为int。在为答案[0],答案[1]等分配值之后,它仍然是int还是由于我添加了多个值而变为其他值?
int answers[4];
answers[0] = 8;
answers[1] = 6;
answers[2] = 7;
answers[3] = 5;
假设我想将'答案'传递给用户定义的函数(请参阅下面的代码)。我的问题是在行中,cout<<“你输入的第一个值...”,我得到一个错误,说'Subscripted value不是数组,指针或向量'。然后,在行中,showAnswers (答案);,我收到错误'没有匹配函数来调用'showAnswers''。我在这里做错了什么?我的第一个猜测是'答案'不再是int,但我不知道它是什么会是。
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);
}
答案 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