我使用了返回类型' 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;
}
答案 0 :(得分:1)
以下是您的代码中的问题:
COMBINE
有两个不同的声明,第一次采用
int
作为第一个参数,第二个参数指向int
。void
COMBINE
函数调用中的关键字main
COMBINE
期望指向int
的指针作为其第一个参数,因此您需要将地址传递给向量D(&D[0]
)的第一个元素,而不是元素本身( D[0]
)。这是整个代码:
#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);
。所以这里实际上有两个函数,一个没有正文。