C语言第五章指针和一维数组.ppt
文本预览下载声明
5.1 指针的概念与运算 5.2 指针做函数的参数 5.2 指针做函数的参数 5.2 指针做函数的参数 5.3 一维数组 5.4 数组与指针的关系 5.5 在函数间传递一维数组 5.5 在函数间传递一维数组 5.5 在函数间传递一维数组 5.5 在函数间传递一维数组 5.5 在函数间传递一维数组 算法描述 5.5 在函数间传递一维数组 示例 #include<stdio.h> int fun(int x[ ],int n) { int i,rt=l; for(i=0;i<=n;i++) rt*=*(x+i ) return rt; } void main() { int a[]={2,3,4,5,6,7,8,9}; printf(“\n%d”,fun(a,3)); } 形参的三种写法 数组下标法 5.5 在函数间传递一维数组 3 一维数组做函数参数的思考 要点 可以传递多个参数,上面的例子 可以得到多个返回值 利用return最多能得到一个返回值 传递一个指针能实现返回一个基类型数据 示例:利用数组返回一个数二次方、三次方、…10次方 … … C语言程序设计 * * * 第5章 指针与一维数组 Your company slogan in here 第5章 指针与一维数组 软件学院计算机科学与技术教研室 冯海文 fh C语言继承了高级语言的内存管理机制,但也还给了编程者一定程度的自主权。 汇编语言程序里使用的数据存放在内存的什么位置等需要编程者自己决定。 权限大,复杂和危险 高级语言不允许编程者直接操作内存,由系统决定内存单元的大小以及在内存区中的位置. 安全,权限小 钥匙:指针 第4章的函数参数可以是整数、浮点数和字符,可以是指针么? 答案是可以。 要点 ? 参数对应,形参和实参都是指针,基类型一致 [例 5.3] 函数的指针参数。 void f(int*p) {Printf(“%P”,p);} void main( ) {int x; float y; f(x);f(int *)&y); } 指针做函数的参数的作用? 传递地址。 要点 ? 利用指针做函数的参数能实现形参影响实参的作用。 用TurboC举例:利用函数传递指针实现交换两个变量的值。 要点 ? 利用指针做函数的参数能实现返回多个返回值的功能。 用TurboC举例:编写一个函数返回一个数的平方和立方。 通过return最多能返回一个值 定义变量解决了个别数据的存储问题,当有大量的数据需要存储时应如何处理呢? 答案是定义数组。 ? 数组是存储同一种类型数据的有序集合。定义一个数组可以替代定义大量的变量,从而降低程序设计的复杂性。 ? 在后续的C++、Java等语言中,还有其它的解决大量数据的存储工具,如vector(向量)、list(列表)和queue(队列)等。 1 一维数组的定义 5.3 一维数组 类型符 数组名[元素个数]; char a[10]; 要点 ?数组名 一个合法的标识符 ?类型符 说明元素的类型 ?元素个数 常量表达式 ?存储属性 可以用auto、static、 extern修饰 一维数组的定义 语法 5.3 一维数组 一维数组的引用 2 一维数组的引用 double a[8]; 元素为a[0]~a[7] 数组名[下标]; a[8] 1. 元素表示 2. 数组元素是普通变量 ?便于循环操作。 ?数组元素总是占用连续的内存区。 a[3]、a[5]都是double变量; a[2]为变量的地址。 语法 5.3 一维数组 一维数组的引用 #includestdio.h void main( ) { int a[10],k; for(k=0; k10; k++) scanf(“%d”, a[k]); for(k=0; k10; k++) printf(“%4d”,a[9-k]*a[9-k]); } 先从键盘接收n个整数,再按与输入相反的次序输出这些数据的平方数。 例5.7 5.3 一维数组 一维数组的引用 C语言不做数组边界检查,是常见的严重错误之一。 int b[10]; b[10] = 3; 超界的数组 x b[9] b[8] b[7] ... b[10] b[10]=x X很生气,后果很严重! X:我的家被b[10]占了! 3. 数组边界 3 定义时的初始化 5.3 一维数组 定义时的初始化 类型
显示全部