数组概念:把具有相同类型的若干变量按有序形式组织起来。
数值数组
- 一维数值数组:
short a[10]; int a[10]; long int a[10];
float a[10]; double a[10];
• 一维数组的定义:类型符 数组名 [常量表达式];
1.数组名的定义符合标识符的书写规范,由数字、字母,下划线组成,第一个字符必须是字母或下划线。
2.数组名不能与其它变量名相同。
3.方括号中常量表达式表示数组元素的个数,其下标从0开始。
如:int a [3]; //表示数组a有三个元素,分别为a[0],a[1],a[2]。
4.不能再方括号中用变量来表示元素的个数。
如:int n = 5;
int a[n];
• 一维数组的初始化:在定义数组的同时进行赋值,称为初始化。
1.定义数组时可以逐个列出数组的值。
如:int a [5] = {1,2,3,4,5};
2.给全部元素赋值时可以不给出数组元素的个数,省略下标值。
如:int a [5] = {1,2,3,4,5}; 可写为 int a [] = {1,2,3,4,5};
3.可以只给部分元素赋初值。
如:int a [10] = {1,2,3,4,5}; //只给a[0]~a[4]5个元素赋值,后5个元素自动赋值为0
4.全局数组若不初始化,编译器将其初始化为0;局部数组若不初始化,内容为随机数。
- 二维数值数组:
int a [2][3] = {1,2,3,4,5,6};
int a[2][3] = {{80,76,92},{64,59,100}};
float a[2][3] = {
{80.5,98.5,60.5},
{67.5,81.5,72.5}
};
• 二维数组的定义:类型说明符 数组名 [常量表达式][常量表达式];
1.命名规则同一维数组。
2.int a[2][3]; //定义了一个两行三列的二维数组,数组名为a,其元素类型为整型,元素个数为2X3=6个。分别为:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
3.二维数组有两个下标,标识它在数组中的位置。
4.二维数组实际的硬件存储器是连续编址的,在内存中,各元素是连续存放的,即放完一行之后顺序放入第二行。
• 二维数组的初始化:在定义数组的同时进行赋值,称为初始化。
1.定义数组时可以逐个列出数组的值。
按行分段赋值可写为:
int a [2][3] = {{1,2,3},{6,4,5}};
按行连续赋值可写为:
int a[2][3] = {1,2,3,4,5,6};
2.可以只给部分元素赋初值,未初始化则为0。
如:int a [2][3] = {{1,2},{3}}; //只给a[0][0]、a[0][1]、a[1][0]元素赋值,其它元素自动赋值为0
3.全局数组若不初始化,编译器将其初始化为0;局部数组若不初始化,内容为随机数。
4.给全部数组元素赋初值时,定义数组时对第一维的长度即行下标可以省略不指定,但第二维的长度即列下标不能省。
如:int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 等价于 a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
在定义时也可只对部分元素赋初值而省略行下标,但应分行赋初值。
例如:int a[][4] = {{0,0,3},{ },{2,10}};
字符数组
- 字符数组的定义
char str = {'c','','p','r','o','g','r','a','m'};
char str = "c program";
char a[][5] = {
{'h','e','l','l','o'},
{'w','o','r','l','d'}
};
char a[][6] = {"hello","world"};
- 字符数组的引用
1.用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志符'\0','\0'是由C编译系统自动加上的。
比如:char str = "c program";在内从中的实际存放为:'c' ' ' 'p' 'r' 'g' 'r' 'a' 'm' '\0'
2.字符数组的输入输出函数
字符串输入函数:gets();
字符串输出函数:puts();
gets()与scanf()的区别:gets()允许输入的字符串含有空格,scanf()不允许含有空格。