当前位置: 首页 > 知识库问答 >
问题:

向函数传递数组时C++错误变量声明为void

钮才哲
2023-03-14

在我的大学开学之前,我正试图用C++来更新自己,但我遇到了一些问题。我正在使用我的教授给出的bubblesort函数,我正在努力在我的int main中运行它。函数参数bubbleSort(int*a,int length),因此我使用了bubbleSort(a,sizeof(a)/sizeof(*a)。编译器显示错误“a”声明为void。如果我犯了错误,我试着寻找答案,但我找不到我的错误。如果你明白为什么我会出现这个错误,请你详细解释一下我遗漏了什么或者做错了什么。

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

void bubblesort(int *a, int length)
{  
    int i, temp, finished = 0; 
   while(!finished)
   {  
       finished = 1;
      for( i = 0; i< length-1; i++)
      {  
        if(a[i] > a[i+1]) 
         {  
            temp = a[i]; 
            a[i] = a[i+1]; 
            a[i+1] = temp;
            finished = 0; 
         } 
      }
   }
}

int main()
{
   int a[] = {5,1,7,9,4,3};
   for (int i = 0;i < sizeof(a)/sizeof(*a);i++){ cout << a[i]; }
   cout << endl;
   void bubblesort(a, sizeof(a)/sizeof(*a));
   for (int i = 0;i < sizeof(a)/sizeof(*a);i++){ cout << a[i]; }
}

共有2个答案

秦才
2023-03-14

在进行函数调用时不能指定函数的返回类型,因此需要:

bubblesort(a, sizeof(a)/sizeof(*a));  // no void at the beginning

但是,您有一个固定大小的数组,因此调用也可以简单地为:

bubblesort(a, std::size(a));

此外,此循环:

for (int i = 0;i < sizeof(a)/sizeof(*a);i++){ cout << a[i]; }

可以这样改写:

for (int elem : a)
  cout << elem;
桂高义
2023-03-14

函数调用中不需要返回类型。

从行中删除void

void bubblesort(a, sizeof(a)/sizeof(*a));

并使之成功

bubblesort(a, sizeof(a)/sizeof(*a));
 类似资料:
  • C++ 数组 C++ 中您可以通过指定不带索引的数组名来传递一个指向数组的指针。 C++ 传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。 如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。 方式 1 形式参数是一个指针:

  • 问题内容: 在处理中,我定义了以下类: 现在,我想创建该类的实例,但是我很难将数组传递给构造函数: 但这总是给我一个错误“意外令牌:{”。因此,显然无法“即时”定义数组。 但是,这将起作用: 但是我发现在对象外部声明该数组是很愚蠢的,因为这会在创建多个对象时带来各种麻烦: 现在,该类的两个实例都引用了相同的数组,这当然不是我想要的。 所以我的问题是:如何在不事先声明数组的情况下将数组正确传递给类的

  • 总而言之,字符串数组输出月份名称,用户输入存储在单独的数组中用于计算。这些计算输出的是总量和平均值,但总降雨量需要与相应实体的月份进行比较,最高和最低的输出需要是字符串,而不是数字。

  • Go 语言数组 如果你想向函数传递数组参数,你需要在函数定义时,声明形参为数组,我们可以通过以下两种方式来声明: 方式一 形参设定数组大小: void myFunction(param [10]int) { . . . } 方式二 形参未设定数组大小: void myFunction(param []int) { . . . } 实例 让我们看下以下实例,实例中函数接收整型数组参数,另一个参数

  • 问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl

  • 我使用mariadb和heidisql来执行sql: DECLARE@Account tID INT; 将值('testfirstname','a','testlastname','user@email.com“,1,1,NOW()); set@Account tID=Last_Insert_Id(); 我一直收到一个错误: QL Error(1064):您的SQL语法有错误;查看与您的Maria

  • 问题内容: 我正在使用TodoMVC应用程序来更好地使用AngularJS框架。在第14-16行的index.html中,您将看到以下内容: 注意 ng-submit 指令如何在不将 newTodo 模型作为参数传递的情况下调用 addTodo() 函数。 __ 不久之后,我在第19行的同一文件中遇到了以下代码: 您可以看到作者这次决定将 allChecked 模型传递给 markAll() 函数

  • 致命错误:无法在第9行的E:\wamp1\wamp\www\sample.php中重新声明关闭()(先前在E:\wamp1\wamp\www\sample.php: 1中声明) 当我运行这个脚本时,它说不能在第9行中重新声明近()(以前在第1行中被标记)。 即使出现错误,与和相关的值也会传递给css。我在这里做错了什么?我正在调用第9行中的函数。有什么帮助吗?