- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 7.1 概述 用数组名作函数参数时要注意以下几点: ①形参数组和实参数组的类型必须一致,否则将引起错误。 ②形参数组和实参数组的长度可以不同,因为在函数调用时,只传递数组的首地址而不检查形参数组的长度。 ③多维数组也可以作为函数的参数,在函数定义时对形参数组可以指定每一维的长度,也可省去第一维的长度。 【例7.10】计算s=12!+22!+32!+42!。 long f1(int p) { int k; long r; long f2(int); k= p*p; r= f2(k); return r; } long f2(int q) { long jc=1; int i; for(i=1;i= q;i++) jc= jc*i; return jc; } main() { int i; long s=0; for(i=1;i=4;i++) s= s+ f1(i); printf(″\ns= % ld\n″,s); } 例7.17 考察静态局部变量的值 #include stdio.h void main() {int f(int); int a=2,i; for(i=0;i<3;i++= printf(″%d ″,f(a)); } int f(int a) {auto int b=0; static c=3; b=b+1; c=c+1; return(a+b+c); } 对静态局部变量的说明: (1) 静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储区空间而不占静态存储区空间,函数调用结束后即释放。 (2)对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。 (3)如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。 (4)虽然静态局部变量在函数调用结束后仍然存在,但其他函数不能引用它。 例7.18 输出1到5的阶乘值 #include stdio.h void main() {int fac(int n); int i; for(i=1;i<=5;i++) printf(″%d!=%d\n″,i,fac(i)); } Int fac(int n) {static int f=1; f=f*n; return(f); } 7.9.4 register变量 变量的值是存放在内存中的。当程序中用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到运算器中。 经过运算器进行运算,如果需要存数,再从运算器将数据送到内存存放。 如果有一些变量使用频繁,则为存取变量的值要花费不少时间。为提高执行效率,C语言允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取。由于对寄存器的存取速度远高于对内存的存取速度,因此这样做可以提高执行效率。这种变量叫做寄存器变量,用关键字register作声明。 例7.19使用寄存器变量 #include stdio.h void main ( ) {long fac(long); long i,n; scanf(%ld,n); for(i=1;i=n;i++) printf(%ld!=%ld\n,i,fac(i)); } long fac(long n) {register long i,f=1; /*定义寄存器变量*/ for (i=1;i=n;i++) f=f*i; return (f); } 7.9.5 用extern声明外部变量 外部变量是在函数的外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。编译时将外部变量分配在静态存储区。用extern来声明外部变量,以扩展外部变量的作用城。 1. 在一个文件内声明外部变量 例8.20 用extern声明外部变量,扩展它在程序文件中的作用域 #include stdio.h void main() { int max(int,int); /*外部变量声明*/ extern A,B; printf(%d\n,max(A,B)); }
文档评论(0)