它是靈活的和安全的。

2021-06-22 18:11:11 字數 1430 閱讀 5376

按值傳遞

預設情況下,按值傳遞的引數在c++。當按值傳遞的引數,乙個引數被傳遞到函式的副本。

考慮下面的**片段:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

voidfoo(inty)

intmain()

在第一次呼叫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

voidfoo(inty)

// y is destroyed here

intmain()

起初,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 甚至可能更糟 這應該由乙個只負責處理...