使用c ++

时间:2019-01-27 07:37:02

标签: c++

我试图将数组从本地函数返回到主函数,但是每次它显示编译错误为

  

从“ 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;
}

我在这里犯什么错误?

1 个答案:

答案 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/

如果还有其他问题,请发表评论,我们会看到