按值傳遞
預設情況下,按值傳遞的引數在c++。當按值傳遞的引數,乙個引數被傳遞到函式的副本。
考慮下面的**片段:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void
foo(
int
y)
int
main()
在第一次呼叫foo()的引數是文字5。呼叫foo()時,建立變數y,5是複製到y。變數的值y然後foo()結束時銷毀。
在第二個呼叫foo()的引數是變數x x 6評估產生價值。第二次呼叫foo()時,再次建立變數y,6是複製到y。變數的值y然後foo()結束時銷毀。
第三呼叫foo()的引數是表示式x + 1。x 7 + 1評估產生價值,傳入變數y。變數y再次foo()結束時銷毀。
因此,該程式輸出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void
foo(
int
y)
// y is destroyed here
int
main()
起初,x是5。呼叫foo()時,x的值(5)傳遞給變數y在foo()。y的價值分配6,然後銷毀。x的值不變,即使y是改變。
路過的優點值:
按值傳遞的引數(如可變數。文字(如x)。6),或表示式(如。x + 1)。
引數是從未改變的函式被呼叫時,從而防止***。
經過價值的缺點:
複製大型結構或類可以花大量的時間複製,這可能會導致效能損失,特別是在函式被呼叫很多次。
在大多數情況下,通過值傳遞引數的最佳方式功能——它是靈活的和安全的。
ZYNQ MIO EMIO IO的區別和靈活使用
zynq mio emio io的區別和靈活使用 在使用zynq上arm cortex a9平台時首先面臨的就是對io進行操作,總的來說對io操作無怪乎兩種方式,一種是直接對gpio暫存器進行操作,這樣程式效率高,但編寫 困難 另一種是呼叫sdk工具提供的api介面函式。在實際使用時zynq又把gp...
它是無效的根據C 的語法
當編寫程式時,幾乎是不可避免的,你會犯錯誤。在這一節中,我們將討論所做的不同的錯誤,以及它們是如何處理的。錯誤分為兩大類 語法和語義錯誤。語法錯誤 語法錯誤發生時,你寫了乙個宣告針對c 語言的語法無效。例如 如果5不等於6,則寫 不等於 雖然這種說法是可以理解的人類,它是無效的根據c 的語法。正確的...
python 太靈活 Python中的靈活引數
別這樣!但如果你還想,我建議你有乙個中間類或函式來處理這個問題 偽 def printthenumber num print num def intermediateprintthenumber input num int dict 或者,在更糟的情況下,one 甚至可能更糟 這應該由乙個只負責處理...