c语言课程之一数组和指针

上传人:第*** 文档编号:49765815 上传时间:2018-08-02 格式:PPTX 页数:45 大小:705.39KB
返回 下载 相关 举报
c语言课程之一数组和指针_第1页
第1页 / 共45页
c语言课程之一数组和指针_第2页
第2页 / 共45页
c语言课程之一数组和指针_第3页
第3页 / 共45页
c语言课程之一数组和指针_第4页
第4页 / 共45页
c语言课程之一数组和指针_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《c语言课程之一数组和指针》由会员分享,可在线阅读,更多相关《c语言课程之一数组和指针(45页珍藏版)》请在金锄头文库上搜索。

1、上嵌网院 讲师:任继梅系列课程C语言基础编程数组和指针第四章上 嵌课程目标掌握C语言基本数据类型 基本数据类型、变量和常量、表达式和运算符掌握C语言基本程序结构 顺序结构、分支结构、循环结构掌握C语言的位操作、常用关键字、数组 位操作、常用基本关键字、数组的基本概念掌握C语言的指针和函数概念 指针、函数、指针和数组、指针和函数上 嵌课程安排第一天上午:数据类型和存储规范 下午:基本输入输出函数 第二天上午:分支结构 下午:循环结构 第三天上午:位运算和关键字 下午:数组 第四天上午:指针 下午:指针和数组 第五天上午:函数 下午:函数和指针上 嵌课前提问1.数组存储的是什么数据?2.如何定义数

2、组?3.数组的下标从几开始?4.指针和地址是什么关系?5.数组名代表什么?6.定义数组int a10,a+可以吗?上 嵌本章目标复杂数据存储之一数组 一维数组的定义和使用 二维数组的使用 字符串和字符数组 字符串常用函数 地址访问利器-指针 指针的定义和运算 指针和字符串 指向数组的指针 空间分配函数上 嵌数组知识点1-一维数组内部资料 请勿COPY6 一维数组的定义: 类型说明符 数组名常量表达式;例如:int a10; a0a9 注意: 数组名的命名规则和变量名相同,遵循标识符命名规 则。 在定义数组时,需要指定数组中元素的个数,方括号 中的常量表达式用来表示元素的个数,即数组长度。 常量

3、表达式中可以包括常量和符号常量,不能包含变 量。C语言不允许对数组的大小作动态定义,即数组的 大小不依赖于程序运行过程中变量的值。 数组总字节数=sizeof(基本类型)*数组元素个数,如上例 :4*5=20如:int a5;其内存存储为: 1000 1004 1008 1010a0 a1 a2 a3 a4上 嵌一维数组内部资料 请勿COPY7一维数组的应用 数组必须先定义后引用 C语言规定只能逐个引用数组 元素,而不能一次引用整个数组引用一维数组元素的一般形式:数组名下标 下标可以是整型常量或整型表达式下标从0开始最大下标值为数组元素个数减一例如:a0=a5+a7-a2*3 数组元素的下标常

4、 用循环变量来控制/程序arraySample1.c 上 嵌一维数组 一维数组的初始化 1、在定义数组时对数组元素赋以初值,示例:2、给一部分元素赋初值 如:static int b10=1,2; 结果为:b0=1,b1=2,b9=0 注:对static数组不赋初值,系统会对所有数组元素自动赋 以0值。 3、若对全部数组元素赋初值时,可以不指定数组长度。 如:int c=1,2,3,4,5;/自动定义c数组长度为5 注意:若被定义数组长度与提供初值的个数不相同,则数组 长度不能省略。如:int a10=1,2,3,4;内部资料 请勿COPY8如:static int a4=1,2,3,4; 结

5、果:a0=1,a1=2, a2=3,a3=4 或 int a4=1,2,3,4;上 嵌一维数组内部资料 请勿COPY9/文件名arraySample2.c #include int main(int argc, char *argv) int a5; int b5=1,2,3,4,5; int c5=1,2,3; int d =1,2,3,4,5;int i; for (i = 0; i vj+1 ) /交换两个相邻元素 temp=v j ; vj=vj+1;vj+1=temp; / /第第i i大的元素筛选结束大的元素筛选结束 上 嵌数组知识点2-二维数组内部资料 请勿COPY11在C语言中

6、,数组的元素还可以是数组,这样就构成二维数组 以二维数组可以看成是“数组的数组”。 二维数组的定义 类型名数组名C_exp1C_exp2, 如:int a34,b4M;(M是符号常量)此下标 提示行此下标 提示列概念上可理解二维数组 a34是一个3行4列的矩阵 注意不能写成:int a3,4,b(4,m)定义:a为34(3行4列)的整型数组b为4M(4行M列)的整型数组 在此基础上,可掌握多维数组的定义 .如:float x234;/*可看成空间矩阵*/上 嵌二维数组内部资料 请勿COPY12 二维数组的存储 二维数组从概念上可理解为行列矩阵 但存储器是一维的,需要按一定规则转换 在内存中:

7、二维数组中元素排列的顺序是按行存放 也就是说:数组元素的实际存放顺序是右边下标比左边下标变化得快! 二维数组的引用 引用形式:数组名下标下标 如:int a24,b53a2-12*2-1下标可以是整型表达式b12=a13/2 注意下标的最大的取值 ,要注意数组定义和数组元素引用的区别 如定义:int a34;则下标下限值是a00,下标上限值是a23如:float a23;200020042008201220162020a00a01a02a10a11a12多维数组依此类推上 嵌练习题编写C程序,arrayExercise1.c,有一个34的矩阵,要求 编程求出其中值最大的那个元素的值,以及其所在

8、的 行号和列号内部资料 请勿COPY131 2 3 49 8 7 6 -10 10 -5 2上 嵌数组知识点3-字符数组和字符串 用来存放字符数据的数组是字符数组。字符数组中的一 个元素存放一个字符。 示例:内部资料 请勿COPY14字符数组定义的一般形式为:char 数组名常量表达式;char c10; c0=I; c1= ; c2=a ; c3= m ; c4= ; c5=h ; c6= a ; c7=p ; c8=p ; c9= y ;c1c0c2c3c4c5c6c7c8c9Iamhappy上 嵌字符数组的初始化1、逐个字符赋给数组中各元素。char c10=I, ,a,m, ,h,a,

9、p,p,y;如果在定义字符数组时不进行初始化,则 数组中各元素的值是不可预料的。2、如果花括号中提供的初值个数大于数组 长度,则按语法错误处理。如果初值个数小 于数组长度,则只将这些字符赋给数组中前 面那些元素,其余的元素自动定为空字符( 即0)。char c10=C, ,p,r,o ,g,r,a,m;内部资料 请勿COPY15c1c0c2c3c4c5c6c7c8c9Cprgram0o#include void main()char c10=I,a,m, ,a, ,b,o,y;int i;for(i=0; i 0, 表示string1大于string2. 其他函数可以查看相关的帮助文档内部资料

10、 请勿COPY19上 嵌字符串函数应用示例 设计程序arraySample3.c,有3个字符串,要求找出其 中最大者内部资料 请勿COPY20#include #include void main() char string20; char str320; int i; for(i=0;i0)strcpy(string,str0);上 嵌字符串函数应用示例elsestrcpy(string,str1);if(strcmp(str2,string)0)strcpy(string,str2);printf(“nthe largest string is:n%sn”, string);上 嵌数组应用

11、综合练习1、编写一程序,arrayExercise2.c,实现 插入法排序 2、一个公司有10个员工,设计一C语言 程序arrayExercise3.c,实现对10个员 工的姓名按英文字母从小到大排序, 并输出所有zhang姓员工的名字 3、编程arrayExercise4.c实现:找出两 个字符串中最大公共子字符串,如 “abccade“,“dgcadde“的最大子串为 “cad“ 内部资料 请勿COPY22上 嵌指针知识点1-指针的定义内存地址内存中存储单元的编号 注意:内存单元的地址与内存单元中的数据是两个 完全不同的概念。 变量地址系统分配给变量的内存单元的起始地 址 示例:(1)直接

12、访问直接利用变量 的地址进行 int *p=scanf(“%d,%d“, printf(“num=%dn“, num);printf(“num=%dn“,*p); 上 嵌指针的定义 定义: *指针变量名=地址; 示例: int num_int=12, *p_int; /*定义一个指向int型数据的指针变量p_int */float num_f=3.14, *p_f;/*定义一个指向float型数据的指针变量p_f */char num_ch=p, *p_ch;/*定义一个指向char型数据的指针变量p_ch */p_int= /*取变量num_int的地址,赋值给p_int */内部资料 请勿

13、COPY24上 嵌与指针相关的运算(1)取地址运算符int *num1_p= printf(“Input the first number: “); scanf(“%d“,num1_p);printf(“Inputthe second number: “); scanf(“%d“,num2_p);printf(“num1=%d, num2=%dn“, num1, num2); if( *num1_p *num2_p ) /*如果num1num2,则交换指针*/ pointer=num1_p, num1_p=num2_p, num2_p=pointer;printf(“min=%d, max=%dn“, *num1_p, *num2_p);内部资料 请勿COPY26程序运行情况: Input the first number:9

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号