函数嵌套在带引用的数组中

时间:2017-11-09 16:53:16

标签: c++ pointers reference

int main() {
    int broccoli,peppers[3]={4,3,2,1} , *zucchini;
    zucchini = &peppers[Saute(peppers,1)];
    cout<<zucchini<<endl;
}

我知道辣椒[2] = 2,但只是想知道为什么在Saute功能之后辣椒的值[2] = 3?因为我认为我只把辣椒引用到西葫芦上,我从来没有宣布像这样的炒菜=炒菜(&amp; peppers,1)

int Saute(int onions[], int celery) {
    celery *= 2;
    onions[celery]++;
    return celery;
}

1 个答案:

答案 0 :(得分:2)

在C ++中,当您将数组传递给函数时,不会复制该数组,而是传递&#34;作为参考&#34; (实际上peppers类型的参数int[3]衰减到指向数组第一个元素的指针,即int*,参数类型int onions[]等同于{ {1}}也是。因此,当您将int *作为参数传递给函数参数peppers时,并且在函数中通过onions增加数组的值,那么您实际上会增加数组{{1}的值}。 这就是为什么......

BTW:onions[celery]++应该是pepper,你应该在这里得到一个编译器警告。