gpt4 book ai didi

c++ - 涉及引用数组的技术细节

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:27 25 4
gpt4 key购买 nike

我为 following problem 编写了这段代码.我的编译器给我以下错误 - [错误] 将 '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;
}
}

}

最佳答案

如错误所述,您不能拥有引用数组。看起来您实际上是在尝试通过引用传递数组。您可以(某种程度上)通过将其更改为指向数组开头的指针来做到这一点:

void repfunc(int a[], int size)  // equivalent to "int * a"

因为数组可以转换为指针,所以如果参数是数组,这将做正确的事情

int a[4] = {1,2,3,4};
repfunc(a, sizeof a / sizeof a[0]);

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

template <size_t size>
repfunc(int (&a)[size])

允许自动推导大小

int a[4] = {1,2,3,4};
repfunc(a);

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

关于c++ - 涉及引用数组的技术细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com