數量可變的

2021-06-22 21:38:13 字數 1373 閱讀 1198

所有的變數使用到這一點,在本教程中有乙個共同點:該變數必須先宣告在編譯的時候。

這導致了兩個問題:第一,很難有條件地宣告乙個變數,把它在乙個if語句塊之外(在這種情況下,它會超出範圍時,塊的結束)。

第二,所有陣列的大小必須決定在執行程式之前。例如,

以下是不合法的:1

2

3

4

5

cout <<"how many variables do you want? ";

intnvars;

cin >> nvars;

intanarray[nvars];// wrong!  the size of the array must be a constant

然而,在許多情況下,它會有用能的大小或調整陣列並正在執行的程式。例如,我們可能需要使用乙個字串,牽著別人的名字,但我們不知道多久,他們的名字是直到他們進入它。我們可能要在數的記錄從磁碟讀取,但我們事先不知道有多少記錄。或者我們可以建立乙個遊戲,乙個怪物追逐的球員數量可變的。

如果我們不得不宣布一切大小在編譯的時候,我們所能做的就是盡力猜測的最大數量的變數,我們需要和希望的,足夠的:

1

2

3

charszname[25];// let's hope their name is less than 25 chars!

record asrecordarray[500];// let's hope there are less than 500 records!

monster asmonsterarray[20];// 20 monsters maximum

這是幾個原因不能解決。首先,它會導致浪費記憶體如果變數實際上並沒有用。例如,如果我們分配25個字元每名稱,但名稱平均只有12個字元長,我們分配在兩次,我們真正需要的!第二,它可以導致人為的限制和/或緩衝區溢位。當使用者試圖在600個記錄從磁碟讀取?因為我們只分配了500的空間,我們可以給使用者乙個錯誤,只看前500條記錄,或(在最壞的情況下,我們根本沒有處理這種情況),我們的記錄,我們的程式緩衝區溢位崩潰。

幸運的是,這些問題是容易解決的問題,通過動態記憶體分配。動態記憶體分配允許我們將任何大小的記憶在我們需要的時候我們需要它。

單變數的動態分配

分配乙個單變數的動態,我們使用標量(非陣列)的新的運算元形式:

函式引數數量可變

python函式使用return返回值,如果不用 return,而用print輸出值,這個函式預設還有乙個返回值為none def total a 5,numbers,phonebook print a a for single item in numbers print single item s...

php呼叫可變函式,PHP呼叫參數量可變的函式

所以我遇到了一些問題。我知道乙個解決方案,但它看起來不太乾淨,我想知道是否有更好的解決方案。我正在編寫乙個mysqli包裝器,用於執行準備好的語句。因為它是乙個包裝器,可以重用 動態 返回的列數取決於查詢,並且不是靜態的。我已經找到了乙個解決這個問題的方法,似乎每個人都在使用 call user f...

引數的數量,權重的數量

首先我們看第一張圖,可以看出w 1 中有6個引數,w 2 中有4個引數,w 3 中有6個引數,所以整個神經網路中的引數有16個 這裡我們不考慮偏置節點,下同 雖然層數保持不變,但是第二個神經網路的引數數量卻是第乙個神經網路的接近兩倍之多,從而帶來了更好的表示 represention 能力。表示能力...