C/C++編程筆記:什么是C++中的陣列衰減?如何預(yù)防?


什么是陣列衰減?
數(shù)組類型和維數(shù)的損失稱為數(shù)組的衰減,通常在我們通過值或指針將數(shù)組傳遞給函數(shù)時(shí)發(fā)生。它的作用是,將第一個(gè)地址發(fā)送到作為指針的數(shù)組,因此數(shù)組的大小不是原始的,而是指針在內(nèi)存中占用的大小。


輸出:
數(shù)組的實(shí)際大小為:28
通過傳遞值修改數(shù)組的大?。?
通過指針傳遞來修改數(shù)組的大?。?
在上面的代碼中,實(shí)際的數(shù)組具有7個(gè)int元素,因此具有28個(gè)大小。但是通過按值和指針進(jìn)行調(diào)用,數(shù)組會(huì)衰減為指針并輸出1個(gè)指針的大小,即8(32位中為4)。
如何防止陣列衰減?
到手柄衰變的典型解決方案是通過陣列的大小也作為參數(shù),而不是在陣列參數(shù)的sizeof使用(參見此的詳細(xì)信息)
防止數(shù)組衰減的另一種方法是通過引用將數(shù)組發(fā)送到函數(shù)中。這樣可以防止將數(shù)組轉(zhuǎn)換為指針,因此可以防止衰減。

輸出:
數(shù)組的實(shí)際大小為:28
通過引用傳遞來修改數(shù)組的大?。?8
在上面的代碼中,按引用傳遞數(shù)組解決了數(shù)組衰減的問題。兩種情況下的尺寸均為28。
每天學(xué)點(diǎn)小知識(shí),希望對(duì)你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號(hào):C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
