




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编号:时间:20XX年X月X日X X 文 案页码:第 页C语言数组的定义及引用(优秀3篇) 数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。的我精心为您带来了C语言数组的定义及引用(优秀3篇),您的肯定与分享是对我最大的鼓励。 C语言数组的定义及引用 篇一 例子:输出一个 44 的整数矩阵,代码如下: #include #include int main() int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20228, b4=2; int c1=233, c2=205, c3=1
2、, c4=6666; int d1=34, d2=0, d3=23, d4=23006783; printf(%9d %9d %9d %9d , a1, a2, a3, a4); printf(%9d %9d %9d %9d , b1, b2, b3, b4); printf(%9d %9d %9d %9d , c1, c2, c3, c4); printf(%9d %9d %9d %9d , d1, d2, d3, d4); system(pause); return 0; 运行结果: 20 345 700 22 56720 9999 20228 2 233 205 1 6666 34 0
3、23 23006783 矩阵共有 16 个整数,我们为每个整数定义了一个变量,也就是 16 个变量。那么,为了减少变量的数量,让开发更有效率,能不能为多个数据定义一个变量呢?比如,把每一行的整数放在一个变量里面,或者把 16 个整数全部都放在一个变量里面。 我们知道,要想把数据放入内存,必须先要分配内存空间。放入4个整数,就得分配4个int类型的内存空间: int a4; 这样,就在内存中分配了4个int类型的内存空间,共 44=16 个字节,并为它们起了一个名字,叫a。 我们把这样的一组数据的集合称为数组(Array),它所包含的每一个数据叫做数组元素(Element),所包含的数据的个数称
4、为数组长度(Length),例如int a4;就定义了一个长度为4的整型数组,名字是a。 数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为下标(Index)。使用数组元素时,指明下标即可,形式为: arrayNameindex arrayName 为数组名称,index 为下标。例如,a0 表示第0个元素,a3 表示第3个元素。 接下来我们就把第一行的4个整数放入数组: a0=20; a1=345; a2=700; a3=22; 这里的0、1、2、3就是数组下标,a0、a1、a2、a3 就是数组元素。 我们来总结一下数组的定义方式: dataType arrayN
5、amelength; dataType 为数据类型,arrayName 为数组名称,length 为数组长度。例如: float m12; char ch9; 需要注意的是: 1) 数组中每个元素的数据类型必须相同,对于int a4;,每个元素都必须为 int。 2) 数组长度 length 最好是整数或者常量表达式,例如 10、20*4 等,这样在所有编译器下都能运行通过;如果 length 中包含了变量,例如 n、4*m 等,在某些编译器下就会报错,我们将在C语言变长数组一节专门讨论这点。 3) 访问数组元素时,下标的取值范围为 0 index length,过大或过小都会越界,导致数组溢
6、出,发生不可预测的情况,我们将在C语言数组的静态性、越界以及溢出一节重点讨论,请大家务必要引起注意。 4) 数组是一个整体,它的内存是连续的,下面是int a4;的内存示意图: 数组的初始化 上面的代码是先定义数组再给数组赋值,我们也可以在定义数组的同时赋值: int a4 = 20, 345, 700, 22; 中的值即为各元素的初值,各值之间用,间隔。 对数组赋初值需要注意以下几点: 1) 可以只给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。例如: int a10=12, 19, 22 , 993, 344; 表示只给 a0a4 5个元素赋值,而后面5个元素自动赋0
7、值。 当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为 0:对于short、int、long,就是整数0;对于char,就是字符 ;对于float、double,就是小数0.0。 我们可以通过下面的形式将数组的所有元素初始化为 0: int a10 = 0; char c10 = 0; float f10 = 0; 由于剩余的元素会自动初始化为0,所以只需要给第0个元素赋0值即可。 示例:输出数组元素。 #include int main() int a6 = 299, 34, 92, 100; int b6, i; /从控制台输入数据为每个元素赋值 for(i=0; i6; i+)
8、 scanf(%d, bi); /输出数组元素 for(i=0; i6; i+) printf(%d , ai); put ); for(i=0; i6; i+) printf(%d , bi); put ); return 0; 运行结果: 90 100 33 22 568 10 299 34 92 100 0 0 90 100 33 22 568 10 2) 只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为: int a10=1, 1, 1, 1, 1, 1, 1, 1, 1, 1; 而不能写为: int a10=1; 3) 如给全部元素赋值,那么在数组定义时可以
9、不给出数组的长度。例如: int a=1,2,3,4,5; 等价于 int a5=1,2,3,4,5; 最后,我们借助数组来输出一个 44 的矩阵: #include #include int main() int a4 = 20, 345, 700, 22; int b4 = 56720, 9999, 20228, 2; int c4 = 233, 205, 1, 6666; int d4 = 34, 0, 23, 23006783; printf(%9d %9d %9d %9d , a0, a1, a2, a3); printf(%9d %9d %9d %9d , b0, b1, b2,
10、b3); printf(%9d %9d %9d %9d , c0, c1, c2, c3); printf(%9d %9d %9d %9d , d0, d1, d2, d3); system(pause); return 0; C语言数组的定义及引用 篇二 指针数组说明的一般形式为: 类型说明符 *数组名数组长度 其中类型说明符为指针值所指向的变量的类型。例如: int *pa3 表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针,指向整型变量。 通常可用一个指针数组来指向一个二维数组。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数组。 main(
11、) int a33=1,2,3,4,5,6,7,8,9; int *pa3=a0,a1,a2; int *p=a0; int i; for(i=0;i3;i+) printf(%d,%d,%d ,ai2i,*ai,*(*(a+i)+i)); for(i=0;i3;i+) printf(%d,%d,%d ,*pai,pi,*(p+i); 本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行。然后用循环语句输出指定的数组元素。其中*ai表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pai表示i行0列元素值;由于p与a0相同,故pi表示0行i列的值;*(p+i)表示0
12、行i列的值。读者可仔细领会元素值的各种不同的表示方法。 应该注意指针数组和二维数组指针变量的区别。这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的。 二维数组指针变量是单个的变量,其一般形式中(*指针变量名)两边的括号不可少。而指针数组类型表示的是多个指针(一组有序指针)在一般形式中*指针数组名两边不能有括号。例如: int (*p)3; 表示一个指向二维数组的指针变量。该二维数组的列数为3或分解为一维数组的长度为3。 int *p3 表示p是一个指针数组,有三个下标变量p0,p1,p2均为指针变量。 指针数组也常用来表示一组字符串,这时指针数组的每个元素被赋予一个字符串的首地址。
13、指向字符串的指针数组的初始化更为简单。例如在例10.32中即采用指针数组来表示一组字符串。其初始化赋值为: char *name=Illagal day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ; 完成这个初始化赋值之后,name0即指向字符串Illegal day,name1指向Monday。.。.。.。 指针数组也可以用作函数参数。 指针数组作指针型函数的参数。在本例主函数中,定义了一个指针数组name,并对name 作了初始化赋值。其每个元素都指向一个字符串。然后又以name作为实参调用指针型函数da
14、y_name,在调用时把数组名name赋予形参变量name,输入的整数i作为第二个实参赋予形参n。在day_ name函数中定义了两个指针变量pp1和pp2,pp1被赋予name0的值(即*name),pp2被赋予namen的值即*(name+ n)。由条件表达式决定返回pp1或pp2指针给主函数中的指针变量ps。最后输出i和ps的值。 main() static char *name= Illegal day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ; char *ps; int i; char *day
15、_name(char *name,int n); printf(input Day No: ); scanf(%d,i); if(i0) exit(1); ps=day_name(name,i); printf(Day No:%2d%s ,i,ps); char *day_name(char *name,int n) char *pp1,*pp2; pp1=*name; pp2=*(name+n); return((n1|n7)? pp1:pp2); 输入5个国名并按字母顺序排列后输出。现编程如下: #includestring.h main() void sort(char *name,in
16、t n); void print(char *name,int n); static char *name= CHINA,AMERICA,AUSTRALIA,FRANCE,GERMAN; int n=5; sort(name,n); print(name,n); void sort(char *name,int n) char *pt; int i,j,k; for(i=0;in1;i+) k=i; for(j=i+1;jn;j+) if(strcmp(namek,namej)0) k=j; if(k!=i) pt=namei; namei=namek; namek=pt; void prin
17、t(char *name,int n) int i; for (i=0;in;i+) printf(%s ,namei); 说明: 1) 在以前的例子中采用了普通的排序方法,逐个比较之后交换字符串的位置。交换字符串的物理位置是通过字符串复制函数完成的。反复的交换将使程序执行的速度很慢,同时由于各字符串(国名)的长度不同,又增加了存储管理的负担。用指针数组能很好地解决这些问题。把所有的字符串存放在一个数组中,把这些字符数组的首地址放在一个指针数组中,当需要交换两个字符串时,只须交换指针数组相应两元素的内容(地址)即可,而不必交换字符串本身。 2) 本程序定义了两个函数,一个名为sort完成排序,
18、其形参为指针数组name,即为待排序的各字符串数组的指针。形参n为字符串的个数。另一个函数名为print,用于排序后字符串的输出,其形参与sort的形参相同。主函数main中,定义了指针数组name 并作了初始化赋值。然后分别调用sort函数和print函数完成排序和输出。值得说明的是在sort函数中,对两个字符串比较,采用了strcmp函数,strcmp函数允许参与比较的字符串以指针方式出现。namek和namej均为指针,因此是合法的。字符串比较后需要交换时,只交换指针数组元素的值,而不交换具体的字符串,这样将大大减少时间的开销,提高了运行效率。 C语言数组的定义及引用 篇三 1.1 一维
19、数组的定义、初始化和引用 1、一维数组的定义方式为: 类型说明符 数组名常量表达式 (1)数组名的命名方法与变量名相同,遵循标识符命名规则; (2)数组是用方括号括起来的常量表达式,不能用圆括号; (3)常量表达式表示数组元素的个数,即数组的长度,数组的下标从0开始,下标的最大值为:常量表达式1; (4)常量表达式中可以包括常量和符号常量,不能包括变量。 可以用赋值语句或输入语句使数组中的元素得到值,但要占用运行时间。可以使数组在运行之前初始化,即在编译阶段使之得到初值。 2、对数组初始化可以用以下方法实现: (1)在定义数组时对数组元素赋以初值。如: static int a10=0,1,2,3,4,5,6,7,8,9; 经过上面的定义和初始化后,a0=0,a1=1,,a9=9。 (2)初始化时可以只对一部分元素赋初值。例如: static int a10=0,1,2,3,4; 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。 (3)如果想使一个数组的元素值全部为0,可以用下面的方法: static int a10=0,0,0,0,0,0,0,0,0,0; 不能用: static int a10=0*10; 如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。 (4)在对全部数组元素赋初值时,可以不指定数组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人承包施工安全合同书样本
- 丙肝职业暴露课件
- 世界名城介绍
- 与静疗有关的课件
- 餐厅装修半包合同细则
- 宁波幼儿师范高等专科学校《逻辑学(批判性思维)》2023-2024学年第二学期期末试卷
- 江苏省徐州市睢宁县第一中学2024-2025学年高考第一次模拟考试英语试题含解析
- 不动产课件教学课件
- 南昌健康职业技术学院《中药药剂学实验》2023-2024学年第二学期期末试卷
- 山西医科大学晋祠学院《仿真实验》2023-2024学年第二学期期末试卷
- 猪舍出租合同协议
- 冲压模具制作合同范例
- 学校会计岗位试题及答案
- 湖北省武汉市2025届高中毕业生四月调研考试数学试卷及答案(武汉四调)
- MOOC 颈肩腰腿痛中医防治-暨南大学 中国大学慕课答案
- YY 1042-2023 牙科学 聚合物基修复材料
- 国家中小学智慧教育平台培训专题讲座
- Q∕GDW 12154-2021 电力安全工器具试验检测中心建设规范
- 初中文言文专项训练十篇(含答案)
- 煤矿顶板事故防治(1)
- 漏电保护器试跳记录表
评论
0/150
提交评论