C教程-----數(shù)據(jù)類型、變量和運算符(3)

字號:

三、多維數(shù)組
    多維數(shù)組的一般說明格式是:
    類型 數(shù)組名[第n維長度][第n-1維長度]......[第1維長度];
    這種說明方式與BASIC、FORTRAN等語言中多維數(shù)組的說明不一樣。
    例如:
    int m[3][2]; /*定義一個整數(shù)型的二維數(shù)組*/
    char c[2][2][3]; /*定義一個字符型的三維數(shù)組*/
    數(shù)組m[3][2]共有3*2=6個元素, 順序為:
    m[0][0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1];
    數(shù)組c[2][2][3]共有2*2*3=12個元素, 順序為:
    c[0][0][0], c[0][0][1], c[0][0][2],
    c[0][1][0], c[0][1][1], c[0][1][2],
    c[1][0][0], c[1][0][1], c[1][0][2],
    c[1][1][0], c[1][1][1], c[1][1][2],
    數(shù)組占用的內(nèi)存空間(即字節(jié)數(shù))的計算式為:
    字節(jié)數(shù)=第1維長度*第2維長度*...*第n維長度*該數(shù)組數(shù)據(jù)類型占用的字節(jié)數(shù)
    4.5 變量的初始化和賦值
    一、變量的初始化
    變量的初始化是指變量在被說明的同時賦給一個初值。Turbo C2.0中外部變量
    和靜態(tài)全程變量在程序開始處被初始化, 局部變量包括靜態(tài)局部變量是在進(jìn)入定義
    它們的函數(shù)或復(fù)合語句時才作初始化。所有全程變量在沒有明確的初始化時將被自
    動清零, 而局部變量和寄存器變量在未賦值前其值是不確定的。
    對于外部變量和靜態(tài)變量, 初值必須是常數(shù)表達(dá)式, 而自動變量和寄存器變量
    可以是任意的表達(dá)式, 這個表達(dá)式可以包括常數(shù)和前面說明過的變量和函數(shù)。
    1. 單個變量的初始化
    例如:
    float f0, f1=0.2;/*定義全程變量, 在初始化時f0被清零, f1被賦0.2*/
    main()
    {
    static int i=10, j; /*定義靜態(tài)局部變量, 初始化時i被賦10, j不確
    定*/
    int k=i*5; /*定義局部變量, 初始化時k被賦10*5=50*/
    char c=’y’; /*定義字符型指什變量并初始化*/
    }
    2. 數(shù)組變量的初始化
    例如:
    main()
    {
    int p[2][3]={{2, -9, 0}, {8, 2, -5}}; /*定義數(shù)組p并初始化/*
    int m[2][4]={{27, -5, 19, 3}, {1, 8, -14, -2}};/*定義數(shù)組m并初
    始化*/
    char *f[]={’A’, ’B’, ’C’}; /*定義數(shù)組f并初始化*/
    }
    從上例可以看出: Turbo C2.0中數(shù)組進(jìn)行初始化有下述規(guī)則:
    (1) 數(shù)組的每一行初始化賦值用"{}"并用","分開, 總的再加一對"{}"括起來,
    最后以";"表示結(jié)束。
    (2) 多維數(shù)組的存儲是按最右維數(shù)的變量變化最快的原則。
    (3) 多維數(shù)組存儲是連續(xù)的, 因此可以用一維數(shù)組初始化的辦法來初始化多維
    數(shù)組。
    例如:
    int x[2][3]={1, 2, 3, 4, 5, 6};/*用一維數(shù)組來初始化二維數(shù)組*/
    (4) 對數(shù)組初始化時, 如果初值表中的數(shù)據(jù)個數(shù)比數(shù)組元素少, 則不足的數(shù)組
    元素用0來填補。
    (5) 對指針型變量數(shù)組可以不規(guī)定維數(shù), 在初始化賦值時, 數(shù)組維數(shù)從0 開始
    被連續(xù)賦值。
    例如:
    char *f[]={’a’, ’b’, ’c’};
    初始化時將會給3個字符指針賦值, 即: *f[0]=’a’, *f[1]=’b’, *f[2]=’c’。
    3. 指針型變量的初始化
    例如:
    main()
    {
    int *i=7899; /*定義整型數(shù)指針變量并初始化*/
    float *f=3.1415926; /*定義浮點數(shù)指針變量并初始化*/
    char *s="Good"; /*定義字符型指針變量并初始化*/
    }