C语言程序设计学习笔记--数组
C语言程序设计学习笔记--数组。
6.1数组
(1)是有序数据的集合,数据元素类型相同,顺序存储,占用相邻的存储空间。
(2)数组必须先定义后引用
(3)C语言只能逐个引用数组元素,不能一次引用整个数组。
(4)数组引用是“数组名+下标”引用,数组下标均为整数。
(5)静态数组变量定义时编译器自动初始化数据元素为0,
动态数组变量在程序执行时分配存储空间,在未被赋值初始化之前其值随机。
6.2一维数组:
1.定义: 类型符 数组名 【常量表达式】
2.说明:(1)常量表达式用来说明数组长度,从a[0]开始。
(2)可以包含常量和符号常量,a[5+3]是合法的,不允许对数组大小做动态定义
(3)可变长数组,在被调用函数(不包括主函数)中定义数组表达式可以为非常量表达式 。调用时候可变,执行时候不变。 若数组为静态存储,则不可用。
Static int a[2*n] 不可用
3.引用: 数组名 【下标】
4.初始化:在定义数组的同时给数组元素赋值
(1) 定义时赋值
Int a [ 3] ={0,1,2};
(2)只给一部分元素赋值
Int a [4] = {1,2,6};
(3)如果一个数组中全部数组值为0
Int a [6 ] ={0 };
(4)在对全部元素赋值时,个数确定,长度可以不赋值。
Int a [ ] ={1,2,3,4,5,6};
6.3二维数组
1.定义:类型符 数组名 【常量表达式】【常量表达式】
2.说明:(1)二维数组按行存放
3.引用:数组名 【下标】【下标】
4.初始化:
(1)分行进行初始化
inta[2][3]={{1,2,3},{4,5,6}};
(2)不分行的初始化
int a[2][3]={ 1,2,3,4,5,6};
⑶ 为部分数组元素初始化
static inta[2][3]={{1,2},{4}};
第一行只有2个初值,按顺序分别赋给a[0][0]和a[0][1];第二行的初值4赋给a[1][0]。由于存储类型是static,故其它数组元素的初值为0。注:某些C语言系统(如:TurboC)中,存储类型不是static的变量或数组的初值也是0。
static int a[2][3]={ 1,2};
只有2个初值,即a[0][0]=1,a[0][1]=2,其余数组元素的初值均为0。
⑷ 可以省略第一维的定义,但不能省略第二维的定义。系统根据初始化的数据个数 和第2维的长度可以确定第一维的长度。
int a[ ][3]={ 1,2,3,4,5,6};
a数组的第一维的定义被省略,初始化数据共6个,第二维的长度为3,即每行3个数,所以a数组的第一维是2。
6.4字符数组
1.定义:
用来存放字符量的数组称为字符数组。 Char c[10]
2.引用:
引用字符数组中的一个元素来引用一个字符,通过下标引用
3.字符串和字符串结束标志:
? 在C语言中,是将字符串作为字符数组来处理的。
? C系统在用字符数组存储字符串常量时会自动加一个‘ \ 0 ’ 作为结束符。例如“C program”共有9个字符。字符串是存放在一维数组中的,在数组中他占10个字节,最后一个字节‘\0'是系统自动加上的。有个结束标志‘\0'后,字符数组的长度就显得不那么重要了。在程序中往往依靠检测‘\0'的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串的长度。
4.字符数组的输入输出:
(1)逐个字符输入,例如
char a[5];
for(int i=0;i<5;i++)
{
scanf("%c",&a[i]); //注意:不能少了地址符&
//a[i]=getchar();
}
(2)采用scanf函数输入,例如
char a[5];
scanf("%s",a); //注意:不能添加地址符&,因为数组名本身即为地址
注意:
? a前面没有地址符&
? 采用scanf输入,一旦遇到空格OR回车OR制表符等,即表示输入结束。如我们从键盘上输入 ab cde,那么数组a的值为:ab
? 采用gets函数输入,例如
char a[5];
gets(a);
注意:
采用gets()函数输入,仅在遇到回车时,才表示输入结束。如我们从键盘上输入ab cde,则输入a的值为:ab cde
? 使用字符串处理:
(1)puts
(2)gets
(3)strcat
(4)strcpy和strncpy
(5)stremp
(6)strupr
? 初始化:
(1) 分别对每一个元素进行赋值操作
char c[0]={'c', ' ', 'p', 'r','o', 'g', 'r', 'a','m'};
赋值后各元素的值为:
c[0]的值为‘c’
c[1]的值为‘’
c[2]的值为‘p’
c[3]的值为‘r’
c[4]的值为‘0’
c[5]的值为‘g’
c[6]的值为‘r’
c[7]的值为‘a’
c[8]的值为‘m’
其中c[9]未赋值,这是由系统自动赋予0值。当对全体元素赋初值时也可以省去长度说明。例如:
char c[]={'c', ' ', 'p', 'r', 'o', 'g', 'r','a', 'm' };
这时C数组的长度自动定为9。
(2) 用字符串的方式对数组作初始化赋值。例如:
char c[]={'c', '','p','r','o','g','r','a','m'};可写为: char c[]={"C program"};
或去掉{}写为:char c[]="C program";