此问题在此处已有答案:
What is array to pointer decay?(11个答案)
2天前关闭。
我知道当我们传递一个指针给一个函数 by-value 时,指针被复制,函数只对一个副本操作,这个副本存储了与原始地址相同的*地址,所以它可以用来改变原始地址的值。
现在,如果我们传递一个数组给一个函数,人们说这和传递指针是一样的,他们还说我可以把数组当作指针来处理。
但是,对我来说,它看起来很不一样!因为我们传递了一个数组 by-value,函数将再次复制。我猜它复制了第一个数组元素。而这个元素没有存储任何地址!所以我们失去了连接。这里复制了什么?
1条答案
按热度按时间r3i60tvu1#
不能通过值传递数组,只能通过指针或引用传递。如果尝试通过值传递,数组将衰减为指向第一个元素的指针,并且指针将通过值传递。
What is array to pointer decay?