cpp(15):错误C2182:'input':非法使用'void'类型

时间:2014-03-05 17:25:57

标签: c++ void

在重新开始我用于学习阵列如何与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();
    }
}

2 个答案:

答案 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;
}

More on functions

就数组而言,它们基本上是一个连续的内存块,其大小足以容纳相同类型的给定数量。以下是关于数组的一些注意事项:

  • 它们使用整数类型和对象,但通常用于普通旧数据。例如int intArray[5];是一个包含5 int种类型的数组。
  • 索引从0开始,意味着前一个示例中的intArray[0]是第一个整数。
  • 使用数组运算符,您可以获取和设置值,例如int last = intArray[4];intArray[0] = -1;

More on arrays

有关如何将数组作为参数传递的更多信息,请查看其他答案,但我还建议选择Good C++ Book; - )