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)
}
如错误所示,您不能拥有一系列引用.看起来你实际上是想通过引用传递一个数组.您可以(通过更改它来执行此操作)以获取指向数组开头的指针:
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实际上是一个数组时才有效; 不是,例如指向动态分配的数组的指针.