文档介绍:C语言程序设计第七章 数组
1
主要内容
一维数组
字符数组与字符串
多维数组
2
概述
我们已经熟悉了整型、浮点型、字符型数据。本章要介绍构造类数据-- 数组。构造类数据是由上述基本类型数据按一定规则排序构成的数据集合体。是C语言的重要内容。构造类型数据有:
数组类型;
结构体类型;
共用体类型。
3
一维数组
一维数组的定义格式
数据类型数组名[元素个数];
说明
数据类型:指数组元素的类型。有int型、 float型、 char型。
数组名:代表一个数据集合的数组的名字。
下标: 用方括号即“[ ]”届定。不能用圆括号和花括号,下标值从0开始计数。
元素个数:数组包含数据的个数。元素个数必须是大于或等于1的整数。
数组必须先定义,后使用。
4
一维数组
例1:例: int data[4]; 该数组有4个元素,它们是:
data[0]
data[1]
data[2]
data[3]
我们然后可以象普通变量一样使用数组:
data[1] =10;
data[2] =12;
data[3] = data[1] + data[2] * 2;
printf (“%d”; data[3]);
5
一维数组
例2:请看下列程序段有什么错误:
int x;
int weight[x]; // 元素个数不能用变量来定义。应该是常量
char name(50); // 下标符不能用圆括号
int num[-5]; // 元素个数不能定义成负数。
float deptname[x+15]; //定义数组不能用变量表达式。只能用常量表达式
int array[]; //元素个数不能用小数定义
6
一维数组
例3:
#define BUFSIZE 512 // 宏定义,用指定的标识符来代替后面的数字
#define STACKSIZE 24 // 宏定义
int inbuffer[BUFSIZE]; //等效为 inbuffer[512]; 在编译时进行替换
char outbuffer[STACSIZE]; //等效为 outbuffer[24]; 在编译时进行替换
float s[15+5],x[10];
7
一维数组
数组元素的存储和使用
每个数组元素都占用内存中的一个存储单元,每个元素都是一个变量,可以像以前讲过的普通变量一样使用,只不过数组元素是通过数组名和方括号“[ ]”里的下标来确定的。
系统为数组元素在内存中分配连续的存储单元。
例: int a[5];
数组名a。
数组元素的数据类型为int整型数据。
数组元素的下标值从0开始。
数组元素的个数为15个,它们是:
a[0]、a[1]、a[2] .. ..a[13]、a[14]
数组名a是数组存储区的首地址,即存放数组第一个元素的地址。
a&a[0];因此数组名是一个地址常量。不能对数组名进行赋值和运算。
a[0]
a[1]
a[2]
a[3]
a[4]
2000
2002
2004
2006
2008
内存地址内存数组元素
8
一维数组
数组的使用
就是对数组元素的读写操作。使用数组与使用普通变量类似,也是先定义后使用。与变量不同的是不能对数组整体进行(读取)操作,只能对数组的元素进行操作。
一维数组的引用格式
数组名[ 下标]
说明
下标可以是常量或常量表达式。
下标可以是变量,也可以是表达式。
下标如果是表达式, 首先计算表达式, 计算的最终结果为下标值。
下标值若不是整型,C系统会自动取整。
下标值从0开始。而不是从1开始。
使用数组时,下标不能超过或等于定义时的下标值。
9
一维数组
例4:
int a[10],i,p;
i=2;
a[2*i-1]=1; //√下标为变量表达式。
a[5]=1; //√对数组a的第六个元素a[5]赋值1
p=a[5]; //√将数组a的第六个元素a[5]的值赋给变量p
a[10-10]=1; // √将1赋给数组a的第一个元素a[0]。
a=11; // ×不能对数组整体进行读写,即不能对数组名读写
printf(“a=%d”,a); // ×同上
a[10]=a[0]-a[1]; // ×下标超限
10