c語(yǔ)言用for循環(huán)給數(shù)組賦值 c語(yǔ)言,可不可以不初始化數(shù)組?
c語(yǔ)言,可不可以不初始化數(shù)組?如果將數(shù)組定義為全局?jǐn)?shù)據(jù)(在主函數(shù)外定義),則編譯器將幫助您初始化數(shù)組位0,但如果它不是全局?jǐn)?shù)據(jù),則數(shù)組元素的值是不確定的。(事實(shí)上,多少與您使用的編譯器有關(guān),例如,vc
c語(yǔ)言,可不可以不初始化數(shù)組?
如果將數(shù)組定義為全局?jǐn)?shù)據(jù)(在主函數(shù)外定義),則編譯器將幫助您初始化數(shù)組位0,但如果它不是全局?jǐn)?shù)據(jù),則數(shù)組元素的值是不確定的。(事實(shí)上,多少與您使用的編譯器有關(guān),例如,vc6.0將初始化十六進(jìn)制數(shù)CC)但如果您這樣定義數(shù)組inta[10]={1,2},則有些編譯器會(huì)將以下項(xiàng)初始化為0,但不能保證所有編譯器都會(huì)這樣做,因此不建議這樣做,并嘗試初始化數(shù)組。
C語(yǔ)言中怎么把一維數(shù)組初始化都為0?
有三種方法:
1。Int arr[10]={0}如果只初始化了數(shù)組的一部分,編譯器會(huì)將其他元素設(shè)置為0。因此,當(dāng)只有第一個(gè)元素初始化為0時(shí),編譯器會(huì)自動(dòng)將其他元素設(shè)置為0(如前一句所述)。
2. Int arr[31]={}
3。在程序開(kāi)始時(shí)使用memset函數(shù)初始化數(shù)組。例如:int arr[1024]memset(arr,01024)//歸零擴(kuò)展數(shù)據(jù):memset()函數(shù)原型為external void*memset(void*buffer,int c,int count)buffer:指針或數(shù)組,c:賦值給buffer的值,count:buffer length。函數(shù)說(shuō)明:S中的當(dāng)前位置后跟N字節(jié)(typedef unsigned int size)ut)替換為CH并返回S。Memset:用于填充內(nèi)存塊中的給定值。這是清除大型結(jié)構(gòu)或陣列的最快方法。它通常初始化新應(yīng)用的內(nèi)存。
在C語(yǔ)言編程中,定義一個(gè)數(shù)組時(shí)要不要初始化?
首先,我們需要知道什么是初始化:當(dāng)聲明變量時(shí),賦值就是初始化。
隨后的賦值語(yǔ)句不是初始化。
一般來(lái)說(shuō),如果直接引用一個(gè)變量而沒(méi)有給它一個(gè)定值,系統(tǒng)就不能保證其操作的唯一性,這是我們程序不允許的。所以我們通常使用初始化方法來(lái)確定它的值。
但并非總是如此。如下所示:
int i
for(i=0I
i通過(guò)賦值而不是初始化來(lái)確定值。
如果在引用數(shù)組元素之前未確定其值,則程序可能會(huì)無(wú)限期運(yùn)行。
因?yàn)橛袃煞N方法來(lái)確定數(shù)組元素的值:初始化和賦值,所以“必須初始化”是不合理的。