------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1,数组简介
数组就是具有相同类型的若干元素按有序的形式组织起来。数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。数组基本分为数值数组、字符数组、指针数组、结构数组等各种类别。
2,数组的定义
在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符数组名[常量表达式];类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int a[10]; 说明整型数组a,有10个元素。
float b[10]; 说明实型数组b,有10个元素。
char c[10];说明字符数组c,有10个元素。
注意:
1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应符合标识符的书写规定。
3)数组名不能与其它变量名相同。
4)方括号中常量表达式表示数组元素的个数,其下标从0开始计算。
5)不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。
3,数组的简单引用
数组元素的一般形式为:数组名[下标]。其中下标只能为整型常量或整型表达式。(如为小数时,C 编译将自动取整。)如下:
a[5]
a[i+j]
a[i++]
数组元素的简单遍历:
#include <stdio.h>
int main()
{
int i,a[5]={1,2,3,4,5};
for(i=0; i<5; i++)
printf("%d",a[i]);
return 0;
}
4,一维数组的初始化
数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。给数组赋值的方法除了用赋值语句对数组元素逐个赋值外, 还可采用初始化赋值和动态赋值的方法。
数组初始化赋值的一般形式为:
类型说明符数组名[常量表达式]={值,值……值};
C语言对数组的初始化赋值还有以下几点规定:
1)可以只给部分元素赋初值。
例如
int a[10]={0,1,2,3,4};
int a[10]={[3]=1,[5]=8}
2)只能给元素逐个赋值,不能给数组整体赋值。
例如
int a[10]={1,1,1,1,1,1,1,1,1,1};
不能写成
int a[10]=1;
3)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。
例如
int a[]={0,1,2,3,4};
5,一维数组举例
#include <stdio.h>
int main()
{
int i,max,a[10]; //定义一个数组a、变量i、变量max
printf("input 10 numbers:\n"); //提示输入10个数
scanf("%d",&a[i]); //给数组元素赋值
max=a[0];
for(i=1;i<10;i++) //求数组a中最大的元素
if(a[i]>max)
max=a[i];
printf("maxmum=%d\n",max);
}
6,二维数组
1)二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2]。其中常量表达式1 表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如:
int a[2][3];
展开后如下:
a[0][0],a[0][1],a[0][2]
a[1][0],a[1][1],a[1][2]
2)二维数组的元素也称为双下标变量,其表示的形式为:数组名[下标][下标].其中下标应为整型常量或整型表达式。在上例中a[1][1]表示第一行第一列的元素。
注意:下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。
3)二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。例如:
int a[2][3]={{1,2,3},{2,3,4}};
或者
int a[2][3]={1,2,3,2,3,4};
注意:(二维数组和一维数组的初始化相类似)
(1)可以只对部分元素赋初值,未赋初值的元素自动取0值。例如:
int a[2}][3]={{1},{2}};
展开后如下:
1 0 0
2 0 0
(2)如对全部元素赋初值,则第一维的长度可以不给出。
例如:
int a[2][3]={1,2,3,4,5,6,};
也可写为:
int a[][3]={1,2,3,4,5,6,};
(3)数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。
例如二维数组a[2][3]可分解为两个一维数组:a[0]、a[1]。
7,字符数组和字符串
1)用来存放字符量的数组称为字符数组。
例如:
char c[5]={'a','b','c','d','e'};
2)在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。
例如:
char c[]={"C program"};
也可写为:
char c[]="C program";
用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。上面的数组c 在
内存中的实际存放情况为:
C | p | r | o | g | r | a | m | \0 |
8,字符数组简单举例
<span style="font-weight: normal;"><span style="font-size:10px;"><span style="font-weight: normal;">#include <stdio.h>
int main()
{
char st[15]; //定义字符数组
printf("input string:\n"); //提示输入字符串
scanf("%s",st); //保存输入结果到字符数组st
printf("%s\n",st); //输出字符st保存的字符串
}</span></span></span>