c語言陣列怎麼初始化

2022-10-09 13:54:10 字數 1682 閱讀 9915

方法:1、定義陣列時給所有元素賦初值,例「int a[5]=」;2、給一部分元素賦值,例「int a[5]=」;3、定義時不指定陣列長度,直接給所有元素賦初值,例「int a=」。

本教程操作環境:windows7系統、c99版本、dell g3電腦。

陣列初始化

陣列的初始化可以使用以下方法實現:

1) 定義陣列時給所有元素賦初值,這叫「完全初始化」。例如:

int a[5] = ;通過將陣列元素的初值依次放在一對花括號中,如此初始化之後,a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5,即從左到右依次賦給每個元素。需要注意的是,初始化時各元素間是用逗號隔開的,不是用分號。

2) 可以只給一部分元素賦值,這叫「不完全初始化」。例如:

int a[5] = ;定義的陣列 a 有 5 個元素,但花括號內只提供兩個初值,這表示只給前面兩個元素 a[0]、a[1] 初始化,而後面三個元素都沒有被初始化。不完全初始化時,沒有被初始化的元素自動為 0。

需要注意的是,「不完全初始化」和「完全不初始化」不一樣。如果「完全不初始化」,即只定義「int a[5];」而不初始化,那麼各個元素的值就不是0了,所有元素都是垃圾值。

你也不能寫成「int a[5]={};」。如果大括號中什麼都不寫,那就是極其嚴重的語法錯誤。大括號中最少要寫乙個數。比如「int a[5]=;」,這時就是給陣列「清零」,此時陣列中每個元素都是零。此外,如果定義的陣列的長度比花括號中所提供的初值的個數少,也是語法錯誤,如「a[2]=;」。

3) 如果定義陣列時就給陣列中所有元素賦初值,那麼就可以不指定陣列的長度,因為此時元素的個數已經確定了。程式設計時我們經常都會使用這種寫法,因為方便,既不會出問題,也不用自己計算有幾個元素,系統會自動分配空間。例如:

int a[5] = ;可以寫成:

int a = ;第二種寫法的花括號中有 5 個數,所以系統會自動定義陣列 a 的長度為 5。但是要注意,只有在定義陣列時就初始化才可以這樣寫。如果定義陣列時不初始化,那麼省略陣列長度就是語法錯誤。比如:

int a;那麼編譯時就會提示錯誤,編譯器會提示你沒有指定陣列的長度。

下面給大家寫乙個簡單的程式:

# include

int main(void)

; int i;

for (i=0; i<5; ++i)

return 0;

}輸出結果是:12

345a 表示陣列的名字,[5] 表示這個陣列有 5 個元素,並分別用 a[0]、a[1]、a[2]、a[3]、a[4] 表示。並分別把花括號內的 1、2、3、4、5 賦給變數 a[0]、a[1]、a[2]、a[3]、a[4]。再次強調,下標從 0 開始,即從 a[0] 開始,而不是 a[1]。

也可以用 scanf 手動從鍵盤對陣列進行初始化:

# include

int main(void)

; //陣列清零初始化

int i;

printf("請輸入5個數:");

for (i=0; i<5; ++i)

for (i=0; i<5; ++i)

printf("\n");

return 0;

}輸出結果是:

請輸入5個數:1 2 3 4 5

1 2 3 4 5同使用 scanf 給字元陣列輸入字串時有所不同,輸入數字時必須用 for 迴圈進行輸入。而輸入字串時無須用迴圈,直接用 scanf 就可以了。

C語言陣列初始化

陣列宣告時必須指明陣列元素的資料型別以及陣列中元素個數,計算機才可以為陣列預留出足夠的空間。陣列大小必須為常量。define size 10 int a 12 int b 100 c size 可以在宣告時通過初始值列表實現陣列元素初始化 int a 3 如果初始值列表中提供的元素個數少於陣列元素個...

C語言陣列初始化

wchar t wname 128 char cname 256 我感興趣的是 1.這種賦值的結果。2.這種形式是否符合標準編碼規則?我找到了如下資料,可能有助於對這個知識點的掌握。初始化值的個數可少於陣列元素個數。當初始化值的個數少於陣列元素個數時,前面的按序初始化相應值,後面的初始化為 0 全域...

c語言 柔性陣列初始化

在做專案時,遇到相似結構,差異在乙個成員,這個成員想表達可變陣列,資料結構如下 struct a struct b 目的 合併兩個結構,用同乙個結構表達 初始化變數,或陣列 首先合併ab兩個結構不難,可以使用柔性陣列 struct ab 這樣可以初始化成員 struct ab var 問題似乎解決,...