C教程-----数据类型、变量和运算符(3)
文章作者 100test 发表时间 2007:03:10 17:16:42
来源 100Test.Com百考试题网
三、多维数组  
多维数组的一般说明格式是:  
类型 数组名[第n维长度][第n-1维长度]......[第1维长度].  
这种说明方式与BASIC、FORTRAN等语言中多维数组的说明不一样。  
例如:  
int m[3][2]. /*定义一个整数型的二维数组*/  
char c[2][2][3]. /*定义一个字符型的三维数组*/  
数组m[3][2]共有3*2=6个元素, 顺序为:  
m[0][0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1].  
数组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],  
数组占用的内存空间(即字节数)的计算式为:  
字节数=第1维长度*第2维长度*...*第n维长度*该数组数据类型占用的字节数  
4.5 变量的初始化和赋值  
一、变量的初始化  
变量的初始化是指变量在被说明的同时赋给一个初值。Turbo C2.0中外部变量  
和静态全程变量在程序开始处被初始化, 局部变量包括静态局部变量是在进入定义  
它们的函数或复合语句时才作初始化。所有全程变量在没有明确的初始化时将被自  
动清零, 而局部变量和寄存器变量在未赋值前其值是不确定的。  
对于外部变量和静态变量, 初值必须是常数表达式, 而自动变量和寄存器变量  
可以是任意的表达式, 这个表达式可以包括常数和前面说明过的变量和函数。  
1. 单个变量的初始化  
例如:  
float f0, f1=0.2./*定义全程变量, 在初始化时f0被清零, f1被赋0.2*/  
main()  
{  
static int i=10, j. /*定义静态局部变量, 初始化时i被赋10, j不确  
定*/  
int k=i*5. /*定义局部变量, 初始化时k被赋10*5=50*/  
char c=’y’. /*定义字符型指什变量并初始化*/  
}  
2. 数组变量的初始化  
例如:  
main()  
{  
int p[2][3]={{2, -9, 0}, {8, 2, -5}}. /*定义数组p并初始化/*  
int m[2][4]={{27, -5, 19, 3}, {1, 8, -14, -2}}./*定义数组m并初  
始化*/  
char *f[]={’A’, ’B’, ’C’}. /*定义数组f并初始化*/  
}  
从上例可以看出: Turbo C2.0中数组进行初始化有下述规则:  
(1) 数组的每一行初始化赋值用"{}"并用","分开, 总的再加一对"{}"括起来,  
最后以"."表示结束。  
(2) 多维数组的存储是按最右维数的变量变化最快的原则。  
(3) 多维数组存储是连续的, 因此可以用一维数组初始化的办法来初始化多维  
数组。  
例如:  
int x[2][3]={1, 2, 3, 4, 5, 6}./*用一维数组来初始化二维数组*/  
(4) 对数组初始化时, 如果初值表中的数据个数比数组元素少, 则不足的数组  
元素用0来填补。  
(5) 对指针型变量数组可以不规定维数, 在初始化赋值时, 数组维数从0 开始  
被连续赋值。  
例如:  
char *f[]={’a’, ’b’, ’c’}.  
初始化时将会给3个字符指针赋值, 即: *f[0]=’a’, *f[1]=’b’, *f[2]=’c’。  
3. 指针型变量的初始化  
例如:  
main()  
{  
int *i=7899. /*定义整型数指针变量并初始化*/  
float *f=3.1415926. /*定义浮点数指针变量并初始化*/  
char *s="Good". /*定义字符型指针变量并初始化*/  
}