int main() {
int broccoli,peppers[3]={4,3,2,1} , *zucchini;
zucchini = &peppers[Saute(peppers,1)];
cout<<zucchini<<endl;
}
我知道peppers2 =2,但我只是想知道为什么在炒函数之后,peppers2 =3的值?因为我认为我只把辣椒当作西葫芦,我从来不声明smtg是这样=炒菜(&辣椒,1)。
int Saute(int onions[], int celery) {
celery *= 2;
onions[celery]++;
return celery;
}
发布于 2017-11-09 16:57:42
在C++中,当将数组传递给函数时,数组不会被复制,而是“作为引用”传递(实际上,int[3]
类型的参数peppers
会衰减到指向数组的第一个元素的指针,即int*
,而参数int onions[]
的类型也等同于int *
)。因此,当您将peppers
作为参数传递给函数参数onions
,并且在函数中通过onions[celery]++
增加数组的值时,实际上就会增加数组pepper
的值。所以..。
顺便说一句:peppers[3]={4,3,2,1}
应该是peppers[4]={4,3,2,1}
,这里应该有一个编译器警告。
https://stackoverflow.com/questions/47207471
复制相似问题