在重新开始我用于学习阵列如何与void组合工作的新程序之后我遇到了以下问题。
cpp(15): error C2182: 'input' : illegal use of type 'void'
有谁知道是什么原因造成的?我是虚空和数组概念的新手。
#include "stdafx.h"
#include <iostream>
using namespace std;
void input (int x );
int main()
{
int x = 0;
int a[ 5 ];
input ( a[ 5 ]);
{
void input(x);
for(int i = 1; i < 5; i++) {
cin >> a [ i ];
}
cin.get();
cout << a [ 3 ];
cin.get();
}
}
答案 0 :(得分:5)
您的代码有很多问题。它只是无效的C ++。请记住,C ++与任何其他编程语言一样,在语法方面是不可原谅的。如果它不是完全正确的语法,它就不会编译。你不能只写出你认为有意义的东西。您需要学习正确的语法并应用它。
看起来您希望从for
循环到最后cin.get()
的所有内容都成为名为input
的函数的一部分。为此,您需要使用适当的语法来定义函数,并且您需要在任何其他函数之外执行此操作:
void input(int x) {
for(int i = 1; i < 5; i++) {
cin >> a [ i ];
}
cin.get();
cout << a [ 3 ];
cin.get();
}
但这仍然存在问题。参数类型为int
,但看起来您想要传递整个数组:
void input(int x[])
请注意,这实际上不是数组类型参数,但实际上是指针。将数组传递给此函数时,x
将是指向其第一个元素的指针。 []
只是一种方便的语法。
然后,不应该将a[5]
传递给函数(这是一个不存在的元素,因为只存在a[0]
到a[4]
),你应该只传递{{1 }}:
a
你也从input(a);
循环到1
- 我不确定这是否是故意的。如果要为数组的每个元素输入值,则应该从4
循环到0
。
答案 1 :(得分:1)
解决当前错误后,您将遇到更多错误。这里有一些可能有用的快速指针。我不想只是给你一个解决方案,因为你还在学习,这无济于事:
void
作为关键字引用“无类型”,并在函数中用于表示没有返回值{}
表示范围,可用于定义函数,循环或控制语句的主体这是一个用于说明基本功能部分的示例程序:
#include <iostream>
// declaration
void Welcome();
int main()
{
// function call
Welcome(); // displays "Hello World"
return 0;
}
// definition
void Welcome()
{
std::cout << "Hello World" << std::endl;
}
就数组而言,它们基本上是一个连续的内存块,其大小足以容纳相同类型的给定数量。以下是关于数组的一些注意事项:
int intArray[5];
是一个包含5 int
种类型的数组。intArray[0]
是第一个整数。int last = intArray[4];
或intArray[0] = -1;
有关如何将数组作为参数传递的更多信息,请查看其他答案,但我还建议选择Good C++ Book; - )