java如何求數(shù)組長度 C語言為什么不建議把變量作為數(shù)組長度?
C語言為什么不建議把變量作為數(shù)組長度?數(shù)組的大小不能用變量表示,因為在編譯和連接過程中,內(nèi)存應(yīng)該根據(jù)您設(shè)置的長度為數(shù)組分配相應(yīng)的內(nèi)存空間。如果它是一個變量,就沒有辦法分配它。可以使用符號常量來解決此問
C語言為什么不建議把變量作為數(shù)組長度?
數(shù)組的大小不能用變量表示,因為在編譯和連接過程中,內(nèi)存應(yīng)該根據(jù)您設(shè)置的長度為數(shù)組分配相應(yīng)的內(nèi)存空間。如果它是一個變量,就沒有辦法分配它??梢允褂梅柍A縼斫鉀Q此問題。首先,使用:#define m 100
#define N 100,然后您可以在程序中定義u[m][N]二維數(shù)組。當(dāng)它不一定是100時,它可以是任何正整數(shù)。
在C語言中,所有變量空間在程序運行開始時應(yīng)用于系統(tǒng),包括和指針。它也需要空間,除了一些動態(tài)應(yīng)用程序方法,如malloc函數(shù)。未經(jīng)申請,不得在航天系統(tǒng)中進行讀寫操作。然后,如果數(shù)組的大小是一個變量定義,則在程序運行之前無法確定數(shù)組的大小,因此無法應(yīng)用它,因此不允許這樣做。解決方案如前所述,例如:int a[n
]可以更改為
int*const a=(int*)malloc(sizeof(int)*n)
,這樣變量就可以直接用作數(shù)組,包括[1]。括號中的運算符“[”只取“]”的值。例如,
a[1
]相當(dāng)于
*(a 1)
,星號后的常量修飾符表示指針聲明后不能更改,即只能指向獲取的空間,完全符合數(shù)組的性質(zhì)。
更多答案(9)