涉及一系列参考文献的技术性

Sou*_*aha 4 c++ arrays reference

我为以下问题编写了此代码.我的编译器给出了以下错误 - [错误]声明'a'作为引用数组.问题是什么?

void repfunc(int& a[],int size){

    for(int i=size-1;i>=0;--i){

            if(a[i]==0){
                a[i]=1;
                return;
            }

        for(int j=i-1;j>=0;--ji){

            if(a[i]==a[j]&&a[i]!=9){
                ++a[i];
                a[i]%=10;
                return;
            }
            else if(a[i]==a[j]&&a[i]==9){
                a[j-1]++;
                a[j-1]%=10;

                    FOR(k, 1,size-j){
                        a[k]=k;
                    }

                return;
            }
        }

    }
Run Code Online (Sandbox Code Playgroud)

}

Mik*_*our 6

如错误所示,您不能拥有一系列引用.看起来你实际上是想通过引用传递一个数组.您可以(通过更改它来执行此操作)以获取指向数组开头的指针:

void repfunc(int a[], int size)  // equivalent to "int * a"
Run Code Online (Sandbox Code Playgroud)

由于数组可以转换为指针,如果参数是数组,这将是正确的

int a[4] = {1,2,3,4};
repfunc(a, sizeof a / sizeof a[0]);
Run Code Online (Sandbox Code Playgroud)

或者,您可以接受对正确大小的数组的引用:

template <size_t size>
repfunc(int (&a)[size])
Run Code Online (Sandbox Code Playgroud)

允许自动推断尺寸

int a[4] = {1,2,3,4};
repfunc(a);
Run Code Online (Sandbox Code Playgroud)

但请注意,这只有在a实际上是一个数组时才有效; 不是,例如指向动态分配的数组的指针.