[工学]02275 计算机基础与程序设计总结.doc
(02557)计算机基础与程序设计总结申明:此教材来自网络,只作为大家学习用,不能用于任何商业用途,如果想要用作商业用途,请联系原作者第一章 计算机及程序设计基础知识一、计算机系统组成与工作原理 计算机的基本结构 代表数据流 代表控制流(1)冯·诺依曼结构有3条重要的设计思想: 计算机应由运算器、控制器、存储器、输入设备和输出设备5大部分组成; 以二进制的形式表示数据和指令; 程序和数据预先存入存储器中,使计算机在工作中能自动地从存储器中取出程序指令。(2)计算机的工作原理指令:是能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一种操作。一条指令通常由如下两个部分组成:操作码:它是指明该指令要完成的操作。操作数:它指操作对象的内容或者所在的单元格地址。指令系统:某一台计算机所能识别的所有指令的集合。程序:一系列指令的有序集合。二、计算机系统组成1.中央处理器(CPU)是计算机的核心部件,由运算器和控制器构成。运算器 又称算术逻辑部件,主要功能是完成对数据的算术运算、逻辑运算和逻辑判断等操作。控制器 是整个计算机的指挥中心,发出各种控制信号,指挥计算机各部分工作。2.存储器(Memory)用来存储程序和数据,存储器可分为两大类:内存储器和外存储器(1)内存储器简称内存,可以与CPU直接交换数据,特点是:容量小、速度快,但价格贵。内存一般分为ROM和RAM。ROM:只读存储器,一种只能读取数据不能写入数据的存储器,断电后,ROM中的信息不会全丢失。RAM:随机访问存储器,一种既能读取数据又能能写入数据的存储器,断电后,RAM中的信息不会全丢失。用户直接使用的内存是RAM,通常说的内存大小也是指RAM。有关存储器的概念地址:存储器由若干单元组成,每个单元有一个唯一的编号,成为地址。位(bit):二进制数据中的一个位,简写为b,音译为比特,是计算机存储数据的最小单位。字节(Byte):是计算机数据处理的最基本单位,简记为B,每个字节由8个二进制位组成,即1B=8bit。字(Word):一个字通常由一个或若干个字节组成。字(Word)是计算机进行数据处理时,一次存取、加工和传送的数据长度。字长越长,计算机性能越好。数据的换算关系:1Byte=8bit 1KB=1024B=210B 1MB=1024KB=220B1GB=1024MB=230B 1TB=1024GB=240B (2)外存储器(简称外存)又称辅助存储器,主要用于保存暂时不用但又需长期保留的程序或数据。如软盘、硬盘、光盘等3.输入设备:键盘、鼠标、扫描仪、条形码读入器等。4.输出设备:显示器、打印机、绘图仪等。三、微型计算机的结构组成1.总线:是计算机各种功能部件之间传送信息的公共信号线和相关的控制逻辑电路。计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。输入输出设备(I/O设备)需要通过I/O接口与系统总线再与CPU相连。四、各种进制数之间的转换 1二、八、十六进制数转换为十进制数(1)二进制数转换成十进制数:以2为基数按权展开并相加。例:(1101100.111)2=1×261×251×231×221×2-11×2-21×2-3=6432840.50.250.125 =(108.875)10(2)八进制数转换为十进制数:以8为基数按权展开并相加。例:(652.34)8=6×825×812×803×8-14×8-2=3844020.3750.0625=(426.4375)10(3)十六进制数转换为十进制数:以16为基数按权展开并相加。例: (19BC.8)16=1×1639×162B×161C×1608×16-1 =40962304176120.5 =(6588.5)102十进制转换为二进制数(1)整数部分的转换:采用的是除2取余法。结果为:(126)10(1111110)2(2)小数部分的转换:采用乘2取整法。例:将十进制数(0.534)10转换成相应的二进制数。结果为:(0.534)10(0.10001)2分析:对于这种既有整数又有小数部分的十进制数,可将其整数和小数分别转换成二进制数,然后再把两者连接起来即可。十进制整数转换为八进制方法:除8取余。 十进制整数转换为十六进制方法:除16取余。3八进制与二进制数之间的转换(1)八进制转换为二进制数转换原则是“一位拆三位”,即把一位八进制数对应于三位二进制数,然后按顺序连接即可。例:将(64.54)8转换为二进制数。 6 4 . 5 4 110 100 . 101 100结果为:(64.54)8(110100.101100)2(2)二进制数转换成八进制数转换原则是“三位并一位”,即从小数点开始向左右两边以每三位为一组,不足三位时补0,然后每组改成等值的一位八进制数即可。例:将(110111.11011)2转换成八进制数。 110 111 . 110 110 6 7 . 6 6结果为:(110111.11011)2(67.66)84二进制数与十六进制数的相互转换(1)二进制数转换成十六进制数二进制数转换成十六进制数的转换原则是“四位并一位”,即以小数点为界,整数部分从右向左每4位为一组,若最后一组不足4位,则在最高位前面添0补足4位,然后从左边第一组起,将每组中的二进制数按权数相加得到对应的十六进制数,并依次写出即可;小数部分从左向右每4位为一组,最后一组不足4位时,尾部用0补足4位,然后按顺序写出每组二进制数对应的十六进制数。例:将(1111101100.0001101)2转换成十六进制数。 0011 1110 1100 . 0001 1010 3 E C . 1 A结果为:(1111101100.0001101)2(3EC.1A)16(2)十六进制数转换成二进制数转换原则是“一位拆四位”,即把1位十六进制数写成对应的4位二进制数,然后按顺序连接即可。例:将(C41.BA7)16转换为二进制数。 C 4 1 . B A 7 1100 0100 0001 . 1011 1010 0111结果为:(C41.BA7)16(110001000001.101110100111)2五、带符号数在计算机中的表示1.原码的表示一个数X的原码表示为:符号位用0表示正,用1表示负;数值部分为X的绝对值的二进制形式。例如:当X1100001时,则X原01100001。当X1110101时,则X原11110101。在原码中,0有两种表示方式:当X0000000时,X原00000000。当X0000000时,X原10000000。2.反码的表示一个数X的反码表示方法为:若X为正数,则其反码和原码相同;若X为负数,在原码的基础上,符号位保持不变,数值位各位取反。例如:当X1100001时,则X原01100001,X反01100001。当X1100001时,则X原11100001,X反10011110。在反码表示中,0也有两种表示形式:当X0时,则X反00000000。当X0时,则X反10000000。3.补码的表示一个数X的补码表示方式为:当X为正数时,则X的补码与X的原码相同;当X为负数时,则X的补码,其符号位与原码相同,其数值位取反加1。例如:当X1110001,X原01110001,X补01110001。当X1110001,X原11110001,X补10001111。在补码表示中,0有唯一的编码:则0补00000000。在微型计算机中,带符号数一般以补码形式存储。六、程序设计语言程序设计语言包括机器语言、汇编语言和高级语言。1.机器语言:以二进制指令代码表示的指令集合,是计算机能直接识别和执行的语言。2.汇编语言:用助记符来表示指令的符号语言。用汇编语言编写的程序要经汇编程序翻译后得到的机器语言的目标程序后才能执行。3.高级语言:是一种接近于人们自然语言与数学语言的程序设计语言。高级语言程序的翻译方式有两种:(1)编译方式结果编译程序机器语言程序编译高级语言源程序可执行程序连接程序连接执行(2)解释方式:对源程序按语句执行的动态顺序进行逐句分析,边翻译边执行,直至程序结束,不生成目标程序。七、算法:用计算机解决一个实际问题的方法和步骤的描述。 算法应具备的五个性质:(可能出多选题) 1.算法应在有限步骤内结束。2.组成算法的规则必须是清楚、准确、无误的,没有二义性。3.有零个或多个输入,有一个或多个输出。4.算法的每一步骤都应当有效地执行,并得到确定的结果。5.算法应是一套描述规则所组成的准确完整的过程。八、结构化程序设计思想1.使用顺序结构、选择结构、循环结构以及他们的组合来组织一个程序,各个结构之间只有一个人口一个出口。2.采用自顶向下逐步求精的方法编写程序。第二章 关于C语言的基本知识第一节 C语言概述一、C程序构成的特点:(教材P22-24) 1.程序是由若干个函数构成的。 每个程序有且仅有一个主函数。 2.程序的执行总是从主函数开始,并在主函数中结束。主函数和其它函数的位置是任意的。其它函数总是通过函数调用语句被执行。3.主函数可以调用任何其它函数;任何其它函数都可以相互调用,但不能调用主函数。二、Turbo C 2.0上机步骤第二节 C语言的数据类型一、C语言的数据类型与变量 1.C语言的数据类型2.变量变量的基本数据类型数据类型数据类型符占用字节数数值范围整型int2(或4)同短整型(或长整型)短整型 short2-32768+32767 (-215215-1)长整型 long4-2147483648+2147483647 (-231231-1)无符号整型unsigned int2(或4)同无符号短整型(或长整型)无符号短整型 unsigned short2065535 (0216-1)无符号长整型 unsigned long404294967295 (0232-1)单精度实型 float4-10381038(保留7位有效数字)双精度实型 double8-1030810308(保留11位有效数字)字符型 char1-128+127二、C程序中的常量1.整型常量 在语言中,整型常量有三种书写形式:()十进制整数:由数字09和正负号表示。如:0、-111、+15、21等。()八进制整数(在前面0). 00 、-0111、+015、021。()十六进制整数(在前面0x)。 例如 0x0 、-0x111、+0xff、0x2d。说明:2、整型常量在一般微型机中占用2个字节,数值范围都是十进制的-32768+32767。长整型常量(在整数的末尾字母“L”):例如0L(十进制)、-0111L(八进制)、+0x15L(十六进制)2 .实型常量 实型常量只使用十进制,它的书写形式有两种:(1)十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123.(2)指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 说明:实型常量在一般的微型机中占用4个字节数值范围都是-10381038。3.字符常量字符常量用两个单引号()前后括住的单个字符来表示。例如,a、1、 % 、A、 n、101。 说明:(1)C语言规定,字母是区分大小写的。(2)在内存中,每个字符常量都占用一个字节,具体存放的是该字符对应的ASCII代码值。(3)在C语言中,一个字符常量也可以看成是“整型常量”,其值就是该字符的ASCII代码值。例如,a ,可以看作是97。a+5等于整数值102。(4)oid)如果其值在0127之间,整型常量也可以将其看成一个字符型常量.例如97,可以当成字符常量a来使用。 转义字符ntvbrf0回车换行符号Tab符号垂直制表符号左退一格符号回车符号换页符号空操作字符,字符串结束标记a"dddxhh响铃符号双引号单引号反斜杠13位8进制数ddd对应的符号12位16进制数hh对应的符号4.字符串常量字符串常量简称为“字符串”。字符串就是用两个双引号(")前后括住的一串字符。例如,"abc"、"12345"、"a"、"A" 、"101nx43"都是字符串。空字符串:没有字符的字符串称为“空字符串”。例如,""。字符串的长度:一个字符串中所有字符的个数称为该字符串的长度第三节 C的运算符和表达式一、算术运算符和算术表达式(每年必考)算术运算符 (+、-;+、-、*、/、%) 说明: 1.除运算(/)和运算对象的数据类型有关。 例如,14/5=2 1/2=0 1/2.0=0.5 1.0/2=0.5。 2.模运算(%)的对象必须是整型数据,结果是整除后的余数,运算结果的符号必须与被除数相同。 例如,14%5=4 14%-5=4 -14%5=-4 -14%-5=-4。二、赋值运算符和赋值表达式赋值运算符 (=)复合赋值运算符 (+= -= *= /= %= &= |= >>= <<=) 说明:复合赋值运算符右边的表达式是自动加括号的。其结合方向自右至左。 【例】“c%=a-3”不能理解为“c=c%a-3”,应理解为“c=c%(a-3)”。三、增量运算符和增量表达式(+ - -) 说明:1.+变量或-变量:先加(或1)再使用该变量的新值;变量+或变量-:先使用该变量的值再加给该变量加1(或1)。2.自加、自减运算符的运算对象是整型、字符型、指针型等变量,不能是常量或表达式。四、关系运算符(>=、>、<=、< =、!=)和逻辑运算符(&& | !) 说明: 1.关系运算和逻辑运算的结果是整型数据0或1。 2.用&&对两个表达式进行计算时,若第一个表达式的值为“假”,则运算结果与第二个表达式的值无关,结果肯定为“假”,所以语言规定此时第二个表达式将不再计算。同样用|对两个表达式进行计算时,若第一个表达式的值为“真”,则运算结果与第二个表达式的值无关,结果肯定为“真”,所以语言规定此时第二个表达式也不再计算。 五、逗号运算符 (,) 逗号表达式的一般形式为: 表达式l,表达式2,表达式n 说明:1.由逗号运算符组成的式子也是表达式,其值等于最右边表达式的值。2.任何运算符都优先于逗号运算符六、条件运算符 (? :) 表达式1?表达式2:表达式3 说明:运算规则:表达式1的值为1,则表达式2的值为整个表达式的值;否则,表达式3的值为整个表达式的值。七、运算符的优先级见教材附录常见运算符优先级由高到底:() 单目算术关系逻辑(!除外)条件赋值逗号运算符。历年真题29.将下面的各种运算符按优先级从高到低排列出来。(要同优先级的用“、”号分隔,不同优先级的由高向低用“”号分隔),、<=、>=、 、+、%、+、/【答案】 + %、/ + <=、>= ,【解析】本题考查运算符的优先级,见教材附录第四节 关于类型转换一、表达式计算中数据类型的自动转换规则doublefloatlongunsignedintchar,short低高说明: 必定的转, 运算对象类型不同时转二、运算结果存入变量时数据类型的自动转换规则 先将运算结果的数据类型自动转换成左边变量的数据类型,然后再赋予该变量。 【例】 设变量定义如下:int a; 计算表达式a=2*1.7后a的值为3,而不是3.4。三、运算结果的强制性数据类型转换规则命令格式如下: (数据类型符)(表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。第三章 C的基本语句及顺序结构程序设计一、格式输出函数(每年必考)printf(输出格式字符串,输出表达式表)要熟练掌握的输出格式字符串: %d 以十进制带符号形式输出整数 %o 以八进制形式输出整数 %x 以十六进制形式输出整数%u 以十进制无符号形式输出整数 (多次考到)%c 以字符形式输出单个字符%s 输出字符串%f 以小数形式输出实数%e 以指数形式输出实数%g 自动选取%f或%e中宽度较小的格式,不输出无意义的0% 输出一个%m.nf 输出实数,格式是n位小数,总宽度为m,超过m位,按实际位数输出,不足m位,用空格补足m位。二、格式输入函数 (每年必考)scanf(输入格式字符串,输入变量地址表) %d 用于输入十进制整数 %o 用于输入八进制整数 %x 用于输入十六进制整数%c 用于输入单个字符%s 用于输入字符串%f,%e 用于输入实数注意:(1)如果多个整型或实型数据输入时,中间要用一个或多个空格隔开,也可以用<Tab>键或回车键隔开。(2)如果连续多个字符输入时,中间不能用任何字符或键隔开。(3)输入格式字符串中出现了格式字符外的其他字符,输入时必须原样将这些字符输入。三、字符输入输出函数 1、输入函数 getchar() 从键盘读取单个字符。2、符输出函数 putchar(ch) 将参数ch对应的字符输出到显示器上。四、顺序结构程序设计 第四章 条件语句与选择结构程序设计一、if语句1.if语句形式之一【格式】if (表达式) 语句; 【功能】计算表达式的值。如果为真(非),则执行“语句”;否则不执行语句。 说明:()表达式可以是能求值的任何类型的表达式,常用的是关系表达式或逻辑表达式。 2.if语句形式之二【格式】if (表达式) 语句; else 语句; 【功能】计算表达式的值。如果为真(非)则执行“语句”, 否则执行“语句”。3.if语句的嵌套与if语句形式之三【格式】if (表达式) 内嵌if语句; else 内嵌if语句; 【功能】计算表达式的值。如果为真(非)则执行“内嵌if语句”, 否则执行“内嵌if语句”。执行内嵌if语句的原则与前面两种形式一样。注意:在分析嵌套的“if语句”和“if-else语句”时,要特别注意else是和上面最近的if配对。二、switch语句【格式】switch (表达式) case 常量表达式: 语句1; break; case 常量表达式: 语句2; break; case 常量表达式: 语句n;break; default: 语句n+1; 说明(1)表达式可以是任何类型的表达式,常用的是字符型或整型表达式。 (2)常量表达式是由常量或符号常量组成的表达式,不能有变量,所有常量表达式值必须互不相同。(3)break在switch语句中的作用是:执行完某个语句组后,将退出该switch语句。如果省略了break语句,则执行完某个语句组后,将连续执行其后的所有语句组,直到有break语句出现或switch语句结束。(4)default及其后的语句组可以省略。省略时,若表达式的值和n个常量表达式值均不相同,则该语句什么也不做。第五章 循环语句与循环结构程序设计一、循环结构语句循环结构当型循环结构: while (表达式) 循环体语句;直到型循环结构: do 循环体语句; while (表达式);次数型循环结构: for (表达式;表达式;表达式) 循环体语句;说明(1)do while 循环至少执行1次。(2)for语句主要用来实现次数型循环结构。表达式1、2、3都可以是任何类型的,都可以省略。但两个分号不可以省略。控制循环结束的表达式省略时,是“死循环”。 二、break语句、continue语句和goto语句1、break语句 【格式】break; 【功能】强制结束当前的循环,不再执行循环体中break后面的语句。说明(1)break语句只能用在三条循环语句的循环体中或switch语句中。(2)通常break语句是和单分支语句配合使用,从而构成第二个结束循环的条件。2、continue语句 【格式】continue; 【功能】跳过continue之后的语句,重新判断循环控制条件,决定是否继续循环。【说明】(1)continue语句只能用在三条循环语句的循环体中。 (2)通常continue语句是和if语句配合使用,从而构成其后的部分循环体是否执行的单分支结构。3、goto语句 【格式】goto 标识符; 【功能】无条件转到标识符所指的语句去执行。【说明】(1)goto语句一般和if语句构成循环结构。 (2)goto语句也可用于退出多重循环。三、循环嵌套 所谓循环嵌套就是一个循环体内包含另一个完整的循环结构。设计多重循环结构时,要注意内层循环语句必须完整地包含在外层循环的循环体中,不得出现内外层循环体交叉现象。但是允许在外层循环体中包含多个并列的循环语句。第六章 数组一、一维数组的定义与应用1.一维数组的定义语句格式:数据类型符 数组名 常量表达式 ;例如:int a6;2.一维数组元素的引用方法: 数组名下标3.一维是数组的初始化说明:()对数组所有元素赋初值,此时数组定义中数组长度可以省略。例如:int a5=1,2,3,4,5;或int a=1,2,3,4,5;(2)对数组部分元素赋初值,此时数组长度不能省略。例如:int a5=1,2;a0=1,a1=2,其余元素为编译系统指定的默认值0。二、二维数组的定义与应用(教材P88-97)1二维数组的定义: 数据类型 数组名行长度列长度;例如:int a34;2二维数组元素的引用: 数组名行下标列下标0行长度-10列长度-1说明:(1)二维数组的存放规律是“按行排列”,即先顺序存放第一行的元素,再存放第二行,以此类推。(2)一个二维数组可以看成若干个一维数组。二维数组a34理解为:有三个元素a0、a1、a2,每一个元素是一个包含4个元素的数组。3、二维数组的不同初始化方法。 ()分行给二维数组所有元素赋初值。例如:int a23=1,2,3,4,5,6; 0 1 2结果: 0 1 123456 ()不分行给多维数组所有元素赋初值。例如:int a23=1,2,3,4,5,6 0 1 2结果: 0 1 123456 ()只对每行的前若干个元素赋初值,此时所有未赋初值的数组元素均获得零值(对整型数组是0;对实型数组是0.0;对字符型数组是0)。例如:int a23=1,4,5; 0 1 2结果: 0 1 100450()只对前若干行的前若干个元素赋初值,此时所有未赋初值的数组元素均获得零值。例如:int a23=1,2; 0 1 2结果: 0 1 120000()若给所有元素赋初值,行长度可以省略。例如:float a3=1,2,3,4,5,6;float a3=1,2,3,4,5,6;自动认为数组a3的行长度是。 0 1 2结果: 0 1 123456三、字符数组及定义和应用及其常用字符处理的系统函数1、字符数组的定义语句: (1)一维字符数组的定义:char 数组名长度;(2)二维字符数组的定义:char 数组名行长度列长度;2、字符数组的初始化(1)每个元素均赋初值 char s13=1,2,3; 0 1 2 结果123(2)所有元素均赋初值可省略数组长度 char s2=1,2,3; 0 1 2 结果123 数组长度为3 (3) 不赋初值的元素值为空字符0 char s33=1,2; 0 1 2 结果120注意,0是字符串结束标记,所以字符数组s3中实际存放的是一个字符串”12”。 (4)char s45=1,2,0,3,0; 0 1 2 3 4 结果12030注意,数组s4中存放了一个字符串”12”。3、字符数组的输入方法(1)单个字符逐个输入 char c11;int i; for(i=0;i<10;i+) scanf(“%c”,&ci); c10=0;(2)整个字符串一次输入 char c11;scanf(“%s”,c); 只能输入不含空格的字符串。(3)用输入函数输入字符串 gets(字符数组名);可以输入含空格的字符串。4、字符数组的输出方法(1)逐个字符输出 for(i=0;i<10;i+) printf(“%c”,ci); (2)一次输出整个字符串 printf(“%s”, c); (3)用输出函数输出字符串 puts(字符数组名);5、常用字符串处理函数(1)字符串复制函数 【格式】strcpy(字符数组1,字符数组2) 【功能】将字符数组2中的字符复制到字符数组1中。(2)字符串连接函数 【格式】strcat(字符数组1,字符数组2)【功能】把字符数组2中的字符串连接到字符数组1中字符串的后面。(3)求字符串长度函数 【格式】strlen(字符数组) 【功能】求字符数组中字符串的长度(除字符串结束标记外的所有字符的个数)。(4)字符串比较函数 【格式】strcmp(字符串1,字符串2) 【功能】若“字符串”小于“字符串”,函数返回值为小于0的整数; 若“字符串”等于“字符串”,函数返回值为0; 若“字符串”大于“字符串”,函数返回值为大于0的整数。 注意:使用上述4个函数,应在程序的开头写上命令“#include <string.h>”第七章 函数一、函数的定义1.函数的概念(1)一个C程序由一个或多个源程序文件组成,一个源程序文件由一个或多个函数组成。(2)一个C程序必须有一个且只能有一个main函数,程序的执行总是从主函数开始,并在主函数中结束。(3)主函数和其它函数的位置是任意的,主函数可以调用任何其它函数,任何其它函数都可以相互调用,但不能调用主函数。2.函数的定义(1)函数定义的一般形式: 存储类型符 数据类型符 函数名(形式参数表) 数据定义语句序列; 执行语句序列; 【例】求两个双精度数之和的函数。不能写成:double add(double a, b) double add(double a,double b) (2)存储类型符 extern 定义的函数叫做外部函数,它可以被其它编译单位中的函数调用。static 定义的的函数叫做内部函数,它只能被本编译单位中的函数调用存储类型说明符可以省略,省略时,默认为外部函数。(3)函数名和形式参数都是由用户命名的标识符。在同一程序中,函数名必须唯一,形式参数名只要在同一函数中唯一即可,可以与其他函数中的变量同名。(4)C语言规定,不能在函数的内部定义函数,即不能嵌套定义函数。(5)定义的函数可以没有形参(无参函数),但函数名后面一定要一对圆括号。(6)函数体内也可以没有任何操作,即空函数,调用空函数,什么也不做。【例】void dummy() 二、函数的调用1.函数的两种调用方式(1)有参函数的调用: 函数名(实际参数表)(2)无参函数的调用: 函数名();2.函数调用时的语法要求(1)调用函数时,函数名必须与所调用的函数名字完全一致。(2)实在参数的个数必须与形式参数的个数一致。实参可以是表达式,在类型上应按位置与形参一一对应匹配。如果类型不匹配,C编译程序按赋值兼容的规则进行转换。(3)除了返回值类型为int或字符型类型的函数外,函数必须先定义(或说明)后调用。(4)在C程序中,函数在被调用过程中又去调用其他函数,称为函数的嵌套调用。(5)在C程序中,函数可以直接或间接自己调用自己,称为递归调用。3.函数调用时的数据传递方法语言规定在函数间传递数据有四种方式:值传递方式、地址传递方式、返回值方式、全局变量传递方式。(1)利用形参与实参传递数据的值传递方式函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值单向传递形参与实参占用不同的内存单元 (2)利用形参与实参传递数据的地址传递方式 函数调用时,将数据的存储地址作为参数传递给形参 形参与实参占用同样的存储单元 “双向”传递,形参和实参的数据实际上并没有传递,其实质是数据的共享 实参和形参必须是地址常量或变量 数组名做实参时,由于数组名代表数组首地址,属于地址传递。 (3)函数的返回值方式形式: return(表达式); 或return 表达式; 或return;功能:使程序控制从被调用函数返回到调用函数中,同时把返回值带给调用函数说明: 函数中可有多个return语句,但每调用一次该函数,只能执行到一个return语句。 若无return语句,遇函数的最后一个时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换三、变量的作用域与存储类型1.变量的作用域(1)局部变量:在函数内部定义的变量,只在该函数内有效。 说明: main中定义的变量只在main中有效; 不同函数中同名变量,占不同内存单元; 形参属于局部变量; 可定义在复合语句中有效的变量; 局部变量可用存储类型:auto register static (默认为auto) (2)全局变量:在函数外面定义的变量,其作用域从定义点到整个程序结束。 全局变量可以作为函数间传递数据的方式2.变量的存储类型 (四种掌握两种)(1)自动型 auto自动型变量