c語(yǔ)言定義數(shù)組時(shí)不規(guī)定長(zhǎng)度 C語(yǔ)言定義未知長(zhǎng)度的數(shù)組?
C語(yǔ)言定義未知長(zhǎng)度的數(shù)組?c語(yǔ)言如何定義未知個(gè)數(shù)的數(shù)組?C語(yǔ)言在數(shù)組數(shù)目未知的情況下,根據(jù)不同的應(yīng)用有三種方式。1. 數(shù)組元素的總數(shù)未知,但要存儲(chǔ)的內(nèi)容是已知的。事實(shí)上,這是一個(gè)已知的數(shù)字偽裝,但程序
C語(yǔ)言定義未知長(zhǎng)度的數(shù)組?
c語(yǔ)言如何定義未知個(gè)數(shù)的數(shù)組?
C語(yǔ)言在數(shù)組數(shù)目未知的情況下,根據(jù)不同的應(yīng)用有三種方式。
1. 數(shù)組元素的總數(shù)未知,但要存儲(chǔ)的內(nèi)容是已知的。事實(shí)上,這是一個(gè)已知的數(shù)字偽裝,但程序員不計(jì)算總數(shù),把工作留給系統(tǒng)。在這種情況下,數(shù)組的數(shù)量可以留空,并且可以顯式初始化數(shù)組以進(jìn)行聲明。例如,char s[]=“this is a test string”初始化這樣的數(shù)組s,其空格數(shù)由初始化字符串隱式確定。
2. 數(shù)組元素的總數(shù)未知,但最大大小已知。例如,如果您不知道數(shù)組的總數(shù),但確定它不會(huì)超過100,則可以為存儲(chǔ)和調(diào)用定義一個(gè)包含100個(gè)元素的數(shù)組。
3. 動(dòng)態(tài)分配數(shù)組。通過malloc函數(shù),可以動(dòng)態(tài)分配數(shù)組,然后記錄當(dāng)前分配的數(shù)組元素個(gè)數(shù),并使用數(shù)組。當(dāng)數(shù)組空間不足時(shí),可以使用realloc函數(shù)重新分配空間,擴(kuò)展數(shù)組元素的個(gè)數(shù)。例如,int size=100,int*P=(int*)malloc(sizeof(int)*100)//初始化并分配100個(gè)元素空間。使用size保存當(dāng)前數(shù)組大小。P=realloc(sizeof(int)*(size 100),P)//當(dāng)空間不足時(shí),添加100個(gè)元素。Size=100//需要注意的是,Size的大小必須同步保持,否則會(huì)出現(xiàn)錯(cuò)誤。
C如何定義一個(gè)未知長(zhǎng)度的數(shù)組?
如果你不知道數(shù)組的長(zhǎng)度,那么這樣的數(shù)組就沒有實(shí)際意義了,所以沒有必要去定義它,當(dāng)然也沒有辦法去定義它。如果您總是想知道長(zhǎng)度,那么在知道長(zhǎng)度之后,使用動(dòng)態(tài)內(nèi)存分配函數(shù)malloc()為它分配內(nèi)存。當(dāng)數(shù)組的長(zhǎng)度發(fā)生變化時(shí),您可以為它重新分配內(nèi)存,復(fù)制數(shù)組,并使用鏈表返回分配給系統(tǒng)的內(nèi)存也可以解決您的問題。
c語(yǔ)言如何定義未知個(gè)數(shù)的數(shù)組?
使用malloc函數(shù)。。。。例如,您需要申請(qǐng)一個(gè)int的未知數(shù)字?jǐn)?shù)組。您可以使用以下程序#include<stdio。H>#包括<stdlib。H>main(){int*pintnprintf(“請(qǐng)輸入數(shù)字n:n”)scanf(%d“,&n)P=(int*)malloc(n*sizeof(int))//然后使用*P作為數(shù)組指針。。~~~}
一般實(shí)踐(t是一種類型,如int):
C99可以使用可變長(zhǎng)度數(shù)組(VLA)和malloc()/free()來分配一個(gè)生命周期可由自身控制的數(shù)組。例如,在malloc()之后,函數(shù)將結(jié)果返回給調(diào)用者。VLA的生命周期是自動(dòng)的,只在范圍內(nèi)有效。