欢迎来到天天文库
浏览记录
ID:59421551
大小:839.50 KB
页数:56页
时间:2020-09-19
《C语言程序设计与应用 第8章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章综合设计与应用8.1变量的作用域与存储类别变量可被识别、能够起作用的范围称为变量的作用域。C语言标准根据变量在源程序中可能出现的位置,将源程序划分成四个不同的区域,分别是:文件域、函数域、块域和函数原型域。(1)文件域文件域:指在一个源文件的区域内起作用。在函数外声明的变量具有文件域。具有文件域的变量在源文件中有效的范围是从声明它的位置开始到源文件尾,也称为全局变量或外部变量。(2)函数域函数域:指在一个函数定义的区域内起作用。C语言中只有标号(后跟冒号“:”的标识符)具有函数域,这意味着goto语句不能在不同的函数之间跳来跳去,
2、以确保C语言的模块化程序结构的独立性。(3)块域块域:指在块语句中从左花括号开始到右花括号结束的区域内起作用。函数的形参和在块语句中声明的变量具有块域,它们只在块域内可识别,块外不可识别。具有块域的变量称为局部变量或内部变量。(4)函数原型域函数原型域:指在函数原型声明语句的范围内起作用。对于已经定义好的函数,在调用之前需要对其进行原型声明。在函数原型声明语句中,声明为参数名的变量具有函数原型域8.1.2变量的存储类别(1)存储类别的概念变量的存储类别决定了变量的存储位置和存储方式。变量的存储位置有两个:内存的数据区和寄存器(参见寄存器
3、存储类别)。内存中供用户使用的存储区,如表8-1所示。变量的存储方式也有两种:静态和动态。在程序运行时,变量的存储方式如表8-2所示。(2)存储类别的声明声明变量的存储类别,一般是与声明变量的类型同时进行,方法是在变量的类型说明符前加上适当的存储类别说明符,每个变量只能有一种存储类别。一般形式是:存储类别说明符数据类型说明符变量名1,变量名2,…,变量名n;C语言中,变量有四种存储类别说明符。①自动存储类别②寄存器存储类别③外部存储类别④静态存储类别例8-2写出程序清单8-2的运行结果,并说明程序的执行过程。/*purpose:静态局部
4、变量author:Zhanghuacreated:2008/09/20*/#includeintf(intnParam){staticintnSum=1;/*静态局部变量*/nSum=nSum+nParam;returnnSum;}voidmain(){printf("%d",f(1));printf("%d",f(1));}运行结果如图8-4所示。8.2指针与数组8.2.1一维数组与指针123456789*(pointer+i),anArr[i]pointer,anArranArrpointer+1,anAr
5、r+1pointer+2,anArr+2pointer+i,anArr+ipointer+8,anArr+8*(pointer+8),anArr[8]*(pointer+2),anArr[2]*(pointer+0),anArr[0]*(pointer+1),anArr[1]例8-4用数组名法从键盘接收并输出一维数组元素。问题描述:定义一个整型数组anArr,有10元素,采用数组名法实现对数组元素的键盘录入,并输出。程序清单8-3 8-3.c/*purpose:数组名法实现数组元素的录入与输出author:Zhanghuacreate
6、d:2008/09/20*/#include"stdio.h"#defineNUM5voidmain(){intnArr[NUM],i;printf("inputelementsofnArr:");for(i=0;i7、优先连续存储的,且在内存中元素的存储仍然是线性的,这一点从图8-8不难看出。因此可以定义一个指针变量pointer指向二维数组的第一个元素,那么i行j列元素的地址可表示为pointer+i*n+j,而元素的值为*(pointer+i*n+j),也可以使用pointer++这样的语句逐一访问二维数组的元素。例8-6用列指针实现二维数组的各元素的输入与输出问题描述:定义一个整型数组anArr,2行2列,通过列指针变量输入与输出各元素的值。#include"stdio.h"voidmain(){intanArr[2][2];int*poin8、ter;pointer=anArr[0];/*pointer指向二维数组的第一个元素的地址*/inti,j;printf("请输入各元素:");for(i=0;i<2;i++)for(j=0;j<2;j++
7、优先连续存储的,且在内存中元素的存储仍然是线性的,这一点从图8-8不难看出。因此可以定义一个指针变量pointer指向二维数组的第一个元素,那么i行j列元素的地址可表示为pointer+i*n+j,而元素的值为*(pointer+i*n+j),也可以使用pointer++这样的语句逐一访问二维数组的元素。例8-6用列指针实现二维数组的各元素的输入与输出问题描述:定义一个整型数组anArr,2行2列,通过列指针变量输入与输出各元素的值。#include"stdio.h"voidmain(){intanArr[2][2];int*poin
8、ter;pointer=anArr[0];/*pointer指向二维数组的第一个元素的地址*/inti,j;printf("请输入各元素:");for(i=0;i<2;i++)for(j=0;j<2;j++
此文档下载收益归作者所有