首頁 > 後端開發 > C#.Net教程 > c語言數組怎麼初始化

c語言數組怎麼初始化

青灯夜游
發布: 2023-01-07 11:45:29
原創
37079 人瀏覽過

方法:1、定義數組時給所有元素賦初值,例“int a[5]={1,2,3,4,5}”;2、給一部分元素賦值,例“ int a[5]={1,2}”;3、定義時不指定數組長度,直接給所有元素賦初值,例“int a[]={1,2,3,4,5}”。

c語言數組怎麼初始化

本教學操作環境:windows7系統、c99版本、Dell G3電腦。

陣列初始化

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

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

int a[5] = {1, 2, 3, 4, 5};
登入後複製
登入後複製

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

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

int a[5] = {1, 2};
登入後複製

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

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

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

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

int a[5] = {1, 2, 3, 4, 5};
登入後複製
登入後複製

可以寫成:

int a[] = {1, 2, 3, 4, 5};
登入後複製

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

int a[];
登入後複製

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

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

# include <stdio.h>
int main(void)
{
    int a[5] = {1, 2, 3, 4, 5};
    int i;
    for (i=0; i<5; ++i)
    {
        printf("%d\n", a[i]);
    }
    return 0;
}
登入後複製

#輸出結果是:

1
2
3
4
5
登入後複製

a 表示陣列的名字,[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 <stdio.h>
int main(void)
{
    int a[5] = {0};  //数组清零初始化
    int i;
    printf("请输入5个数:");
    for (i=0; i<5; ++i)
    {
        scanf("%d", &a[i] );
    }
    for (i=0; i<5; ++i)
    {
        printf("%d\x20", a[i]);
    }
    printf("\n");
    return 0;
}
登入後複製

#輸出結果是:

请输入5个数:1 2 3 4 5
1 2 3 4 5
登入後複製

同使用scanf 給字元數組輸入字串時有所不同,輸入數字時必須用for 迴圈輸入。而輸入字串時無須用循環,直接用 scanf 就可以了。

相關推薦:《C語言影片教學

以上是c語言數組怎麼初始化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板