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;
}
答案 0 :(得分:2)
在C ++中,当您将数组传递给函数时,不会复制该数组,而是传递&#34;作为参考&#34; (实际上peppers
类型的参数int[3]
衰减到指向数组第一个元素的指针,即int*
,参数类型int onions[]
等同于{ {1}}也是。因此,当您将int *
作为参数传递给函数参数peppers
时,并且在函数中通过onions
增加数组的值,那么您实际上会增加数组{{1}的值}。
这就是为什么......
BTW:onions[celery]++
应该是pepper
,你应该在这里得到一个编译器警告。