三、多維數(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ù)組占用的內存空間(即字節(jié)數(shù))的計算式為:
字節(jié)數(shù)=第1維長度*第2維長度*...*第n維長度*該數(shù)組數(shù)據(jù)類型占用的字節(jié)數(shù)
4.5 變量的初始化和賦值
一、變量的初始化
變量的初始化是指變量在被說明的同時賦給一個初值。Turbo C2.0中外部變量
和靜態(tài)全程變量在程序開始處被初始化, 局部變量包括靜態(tài)局部變量是在進入定義
它們的函數(shù)或復合語句時才作初始化。所有全程變量在沒有明確的初始化時將被自
動清零, 而局部變量和寄存器變量在未賦值前其值是不確定的。
對于外部變量和靜態(tài)變量, 初值必須是常數(shù)表達式, 而自動變量和寄存器變量
可以是任意的表達式, 這個表達式可以包括常數(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ù)組進行初始化有下述規(guī)則:
(1) 數(shù)組的每一行初始化賦值用"{}"并用","分開, 總的再加一對"{}"括起來,
最后以";"表示結束。
(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"; /*定義字符型指針變量并初始化*/
}
多維數(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ù)組占用的內存空間(即字節(jié)數(shù))的計算式為:
字節(jié)數(shù)=第1維長度*第2維長度*...*第n維長度*該數(shù)組數(shù)據(jù)類型占用的字節(jié)數(shù)
4.5 變量的初始化和賦值
一、變量的初始化
變量的初始化是指變量在被說明的同時賦給一個初值。Turbo C2.0中外部變量
和靜態(tài)全程變量在程序開始處被初始化, 局部變量包括靜態(tài)局部變量是在進入定義
它們的函數(shù)或復合語句時才作初始化。所有全程變量在沒有明確的初始化時將被自
動清零, 而局部變量和寄存器變量在未賦值前其值是不確定的。
對于外部變量和靜態(tài)變量, 初值必須是常數(shù)表達式, 而自動變量和寄存器變量
可以是任意的表達式, 這個表達式可以包括常數(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ù)組進行初始化有下述規(guī)則:
(1) 數(shù)組的每一行初始化賦值用"{}"并用","分開, 總的再加一對"{}"括起來,
最后以";"表示結束。
(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"; /*定義字符型指針變量并初始化*/
}