返回类型' void'导致错误的函数

时间:2014-05-11 06:33:05

标签: c++

我使用了返回类型' void'对于一个函数,但错误来了 - 变量或字段' COMBINE'声明void,函数名称为COMBINE。

错误即将来临 - 变量或字段' COMBINE'声明void,函数名称为COMBINE。

这是我的代码

#include<iostream>
using namespace std;

void COMBINE(int,int,int);

void COMBINE(int *p,int M,int N){

   int i,C[M + N],l = 1;

   for(i = 0 ; i < M + N ; i++){
        if( ( *(p + i)  % 2) == 0){
           C[i] = *(p+i);
        }
        else{
           C[M + N - l] = *(p + i);
           l++;
        }
   }

   cout<<"The resultant array is ";
   for(i = 0 ; i < M + N ; i++){
        cout<<C[i]<<"  ";
   }

}

int main(){
   int M,N,i;

   cout<<"Enter the size of first array";
   cin>>M;

   cout<<"Enter the size of second array";
   cin>>N;

   int A[M],B[N];
   int D[M+N];

   for(i = 0 ; i < M ; i++){
      cout<<"Enter the value of"<<i+1<<"number of first array";
      cin>>A[i];
   }

   for(i = 0 ; i < M ; i++){
      cout<<"Enter the value of"<<i+1<<"number of second array";
      cin>>B[i];
   }

   for(i = 0 ; i < M ; i++){
      D[i] = A[i];
   }

   for(i = 0 ; i < N ; i++){
      D[i + M] = B[i];
   }

   void COMBINE(D[0],M,N);

   return 0;
}

2 个答案:

答案 0 :(得分:1)

以下是您的代码中的问题:

  1. COMBINE有两个不同的声明,第一次采用 int作为第一个参数,第二个参数指向int
  2. 您需要删除void
  3. COMBINE函数调用中的关键字main
  4. 由于COMBINE期望指向int的指针作为其第一个参数,因此您需要将地址传递给向量D(&D[0])的第一个元素,而不是元素本身( D[0])。
  5. 这是整个代码:

    #include<iostream>
    using namespace std;
    
    void COMBINE(int *,int,int);
    
    void COMBINE(int *p,int M,int N){
    
       int i,C[M + N],l = 1;
    
       for(i = 0 ; i < M + N ; i++){
            if( ( *(p + i)  % 2) == 0){
               C[i] = *(p+i);
            }
            else{
               C[M + N - l] = *(p + i);
               l++;
            }
       }
    
       cout<<"The resultant array is ";
       for(i = 0 ; i < M + N ; i++){
            cout<<C[i]<<"  ";
       }
    
    }
    
    int main(){
       int M,N,i;
    
       cout<<"Enter the size of first array";
       cin>>M;
    
       cout<<"Enter the size of second array";
       cin>>N;
    
       int A[M],B[N];
       int D[M+N];
    
       for(i = 0 ; i < M ; i++){
          cout<<"Enter the value of"<<i+1<<"number of first array";
          cin>>A[i];
       }
    
       for(i = 0 ; i < M ; i++){
          cout<<"Enter the value of"<<i+1<<"number of second array";
          cin>>B[i];
       }
    
       for(i = 0 ; i < M ; i++){
          D[i] = A[i];
       }
    
       for(i = 0 ; i < N ; i++){
          D[i + M] = B[i];
       }
    
       COMBINE(&D[0],M,N);
    
       return 0;
    }
    

答案 1 :(得分:0)

COMBINE的前瞻声明中有错误。

该函数为void COMBINE(int *p,int M,int N),但您已将其声明为void COMBINE(int,int,int);。所以这里实际上有两个函数,一个没有正文。