偽數(shù)組和數(shù)組的區(qū)別 C語(yǔ)言為什么不建議把變量作為數(shù)組長(zhǎng)度?
C語(yǔ)言為什么不建議把變量作為數(shù)組長(zhǎng)度?數(shù)組的大小不能用變量表示,因?yàn)樵诰幾g連接過(guò)程中,應(yīng)該根據(jù)您設(shè)置的長(zhǎng)度為數(shù)組分配內(nèi)存。如果它是一個(gè)變量,就沒(méi)有辦法分配它。您可以使用符號(hào)常量來(lái)求解它。首先,使用:#
C語(yǔ)言為什么不建議把變量作為數(shù)組長(zhǎng)度?
數(shù)組的大小不能用變量表示,因?yàn)樵诰幾g連接過(guò)程中,應(yīng)該根據(jù)您設(shè)置的長(zhǎng)度為數(shù)組分配內(nèi)存。如果它是一個(gè)變量,就沒(méi)有辦法分配它。您可以使用符號(hào)常量來(lái)求解它。首先,使用:#define M 100
#define N 100,然后在程序中定義u[M[N]二維數(shù)組。如果它不一定是100,它可以是任何正整數(shù)。
在C語(yǔ)言中,所有變量空間在程序操作開(kāi)始時(shí)應(yīng)用于系統(tǒng),包括和指針。除了malloc函數(shù)等一些動(dòng)態(tài)應(yīng)用方法外,它還需要空間。任何應(yīng)用程序空間系統(tǒng)都不允許讀寫(xiě)。如果數(shù)組大小是變量定義,則在程序運(yùn)行之前無(wú)法確定數(shù)組大小,并且無(wú)法應(yīng)用它,因此不允許使用它。解決方案如上所述,例如:
int a[n
可以更改為
int*const a=(int*)malloc(sizeof(int)*n)
,這樣變量就可以直接用作數(shù)組,包括[1]。因?yàn)椤癧]”中的圓括號(hào)運(yùn)算符只會(huì)偏移其中的地址數(shù)并獲取值。例如,
a[1
相當(dāng)于
*(a 1)
,星號(hào)后的常量修飾符表示指針聲明后不能更改,即只能指向獲取的空間,這完全符合數(shù)組的性質(zhì)。
015]更多答案(9)