一维数组它的元素只需要用数组名加一个下标,就能唯一确定。
定义一维数组的一般形式为:类型说明符 数组名【常量表达式】
例如:
int a[10];
表示定义了一个整型数组,数组名为a,此数组包含十个整型元素;而且要注意,该数组下标是从0开始的,这10个元素a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。上面的定义呢,就不存在数组元素a[10]。
那么数组名命名规则是什么呢?
其实数组名的命名规则和变量名相同,都遵循标识符命名规则。
数组的定义需要注意什么?
常量表达式可以包括常量和符号常量,例如:
int a[6+8];
该行代码就是合法的。
但需要注意的是不能包含变量。
例如:int a[n]; 这是不合法的。
还有就是,C语言不允许对数组的大小作动态定义,也就是说数组的大小不依赖于程序运行过程中变量的值。
例如:
int n;scanf("%d",&n);int a[n];
上述定义数组的代码是不对的,初学者一定不要犯这样的错误
在定义数组并对其赋值后,就可以引用数组的元素了。
引用数组元素形式如下:数组名【下标】
例如:
int a[10]; //前面有int,这是定义数组,指定数组包含十个元素t=a[6]; //这里的a[6]表示引用a数组中序号为6的元素
为了使程序简洁,常在定义数组的同时给元素赋值,这称为元素的初始化。1. 在定义数组时对全部数组元素赋予数值。例如:
int a[10]={0,1,2,3,4,5,6,7,8,9};
将各元素初值放在一对花括号里,数据间用逗号分隔。2. 可以只给数组一部分元素赋值。例如:
int a[10]={0,1,2,3,4}
上述表示只给前面5个元素赋初值,系统自动给后5个元素赋初值为0.3. 如果使一个数组中的全部元素值为0,可以写成:
int a[10]={0,0,0,0,0,0,0,0,0,0}或int a[10]={0};
4. 对全部元素赋初值时,由于数据的个数已经确定,所以可以不指定数组长度。
例如:
int a[ ]={1,2,3,4,5};
02
二维元素
二维元素常称为矩阵。
二维数组定义的一般形式:类型说明符 数组名【常量表达式】【常量表达式】
二维数组基本概念与方法和一维数组相似。
二维数组元素的表达形式为:数组名【下标】【下标】
例如,a[2][3] 表示a数组中序号为2的行中序号为3的列的元素。
数组元素可以出现在表达式中,也可以被赋值。
例如
b[1][2]=a[2][3]/2
但要注意的是,在引用数组时,下标值应在已定义的数组大小的范围内。
例如:
int a[3][4]; //定义a为3x4的二维数组……a[3][4]=3; //不存在a[3][4]元素
在上述定义中,数组a可用的行下标范围在0 ~ 2,列下标范围在0 ~ 3,用a[3][4]表示元素显然超过了数组的范围。
1. 分行给二维数组赋初值。
例如:
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2. 可以将所有元素都写在一个花括号里,按数组元素在内存里的排列顺序对各元素赋初值。
例如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
但该方法和第一种比起来,写起来容易遗漏也不好检查。3. 可以对部分元素赋初值。
例如:
int a[3][4]={{1},{5},{9}};
他的作用只是对各行的第一列(即序号为0的列)的元素赋初值,其余元素自动为0。
也可以对各行的某一元素赋初值,
例如:
int a[3][4]={{1},{0,6},{0,0,11}};
初始化的元素如下:
1 0 0 0
0 6 0 0
0 0 11 0
当然了,也可以对某几行元素赋值:
int a[3][4]={{1},{5,6}};
数组元素为:
1 0 0 0
5 6 0 0
0 0 11 04. 如果对全部元素都赋初值,则定义数组时对第一维长度可以不指定,但第二维长度不能省。
例如:
int a[3][4]={{1},{5,6}};
与下面的定义等价
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
03 字符数组C语言中没有字符串类型,也没有字符串变量,字符串是存放在字符型数组中的。
用来存放字符数据的数组是字符数组。在字符数组中一个元素内存放一个字符。
例如:
char c[10];c[0]='I';c[1]=' ';c[2]='a';c[3]='m';c[4]='';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';
由于字符型数据是以整型形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据。
例如:
int a[10];c[0]='a';
对字符数组初始化,把各个字符依次赋给数组中各元素。
例如:
char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};
1. 逐个字符输入输出。用格式符“%d”输入或输出一个字符。
例如:
char str[6];int i;for(i=0;i<6;i++) scanf("%c",&str[i]); //字符数组输入for(i=0;i<6;i++) printf("%c",str[i]); //字符数组输出
2. 将整个字符串一次输入或输出,用“%s”格式符。
例如:
char str[6];scanf("%s",str); //字符串输入printf("%s",str); //字符串输出
由于字符数组名表示的就是数组的首地址,所以以%s的格式输入输出一个字符串时,字符数组名前面不能再取地址符号“&”。
本期语言笔记到这里就结束了,我们下期见!如果有疑问可以在技术菌团官方QQ群 (655575022) 里讨论咨询。