我试图将数组从本地函数返回到主函数,但是每次它显示编译错误为
从“ int”到“ int *”的无效转换[-f允许]
#include <bits/stdc++.h>
using namespace std;
int* GCDstrings(int a,int b,int *F)
{
int i;
if(a%b==0)
{
F[0]=1;
for(i=1;i<a;i++)
F[i]=0;
}
return F;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int x,y;
cin>>x>>y;
int f[x];
int* p;
p=GCDstrings(x,y,f[x]);
for(int i=0;i<=x;i++)
cout<<*(p+i);
}
return 0;
}
我在这里犯什么错误?
答案 0 :(得分:3)
您的错误在于代码的这一部分
int f[x];
int* p;
p=GCDstrings(x,y,f[x]);
您正在尝试创建动态数组,然后将其传递给函数。
传递数组时,应仅将位置传递给它的第一个值。
您可以
p=GCDstrings(x,y,f);
在函数调用期间。
或者您可以选择
p=GCDstrings(x,y,&f[0]);
有关更多信息,请查看此链接https://www.programiz.com/cpp-programming/passing-arrays-function。
另外,您可能希望将来考虑动态内存分配,但是看起来您像是在开始,因此分配长度为x的数组是可以的,但是请稍后再进行检查。 https://www.geeksforgeeks.org/new-and-delete-operators-in-cpp-for-dynamic-memory/
如果还有其他问题,请发表评论,我们会看到