77范文网 - 专业文章范例文档资料分享平台

第7章 用函数实现模块化程序设计 ppt.Convertor(6)

来源:网络收集 时间:2019-04-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

for (i=0;i<3;i++) for(j=0;j<4;j++)

if (array[i][j]>max) max = array[i][j]; return (max); }

要与实参数组第二维大小相同 7.8局部变量和全局变量 7.8.1 局部变量 7.8.2 全局变量 7.8.1 局部变量

定义变量可能有三种情况: 在函数的开头定义

在函数内的复合语句内定义 在函数的外部定义 7.8.1 局部变量

在一个函数内部定义的变量只在本函数范围内有效 在复合语句内定义的变量只在本复合语句范围内有效 在函数内部或复合语句内部定义的变量称为“局部变量” float f1( int a) { int b,c; …… }

char f2(int x,int y) ? { int i,j; …… }

int main( ) ? { int m,n;

…… return 0; }

a、b、c仅在此函数内有效 x、y、i、j仅在此函数内有效 m、n仅在此函数内有效 float f1( int a) { int b,c; …… }

char f2(int x,int y) ? { int i,j; …… }

int main( ) ?

{ int a,b;

…… return 0; }

类似于不同班同名学生 a、b也仅在此函数内有效 int main ( ) { int a,b;

…… { int c; c=a+b; ……

} …… }

c仅在此复合语句内有效 a、b仅在此复合语句内有效 7.8.2全局变量

在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量 外部变量是全局变量(也称全程变量)

全局变量可以为本文件中其他函数所共用

有效范围为从定义变量的位置开始到本源文件结束 int p=1,q=5 float f1(int a)

{ int b,c; …… } char c1,c2;

char f2 (int x, int y) { int i,j; …… } int main ( ) { int m,n; …… return 0; }

p、q、c1、c2为全局变量 int p=1,q=5 float f1(int a)

{ int b,c; …… } char c1,c2;

char f2 (int x, int y) { int i,j; …… } int main ( ) { int m,n; …… return 0;

}

p、q的有效范围 c1、c2的有效范围

例7.14 有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。 解题思路:调用一个函数可以得到一个函数返回值,现在希望通过函数调用能得到3个结果。可以利用全局变量来达到此目的。 #include

float Max=0,Min=0; int main()

{ float average(float array[ ],int n); float ave,score[10]; int i;

printf(\ for(i=0;i<10;i++)

scanf(\ ave=average(score,10);

printf(\

average=%6.2f\\n\ return 0; }

float average(float array[ ],int n) { int i; float aver,sum=array[0]; Max=Min=array[0]; for(i=1;i

{ if(array[i]>Max) Max=array[i];

else if(array[i]

aver=sum/n; return(aver); }

ave score 10 Max Min aver array n Max Min main 函数 average 函数

建议不在必要时不要使用全局变量

例7.15 若外部变量与局部变量同名,分析结果。 #include int a=3,b=5; int main()

{ int max(int a,int b); int a=8;

printf(“max=%d\\n”,max(a,b)); return 0; }

int max(int a,int b) { int c; c=a>b?a:b; return(c); }

a为局部变量,仅在此函数内有效 b为全部变量 #include int a=3,b=5; int main()

{ int max(int a,int b); int a=8;

printf(“max=%d\\n”,max(a,b)); return 0; }

int max(int a,int b) { int c; c=a>b?a:b; return(c); }

a、b为局部变量,仅在此函数内有效 7.9变量的存储方式和生存期

7.9.1动态存储方式与静态存储方式 7.9.2 局部变量的存储类别 7.9.3 全局变量的存储类别 7.9.4 存储类别小结

7.9.1动态存储方式与静态存储方式

从变量的作用域的角度来观察,变量可以分为全局变量和局部变量

从变量值存在的时间(即生存期)观察,变量的存储有两种不同的方式:静态存储方式和动态存储方式

静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式 动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式 用户区

将数据存放在此区

全局变量全部存放在静态存储区中

①函数形式参数②函数中定义的没有用关键字static声明的变量③函数调用时的现场保护和返回地址等存放在动态存储区

程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中占据固定的存储单元

函数调用开始时分配,函数结束时释放。在程序执行过程中,这种分配和释放是动态的 每一个变量和函数都有两个属性:数据类型和数据的存储类别

数据类型,如整型、浮点型等

存储类别指的是数据在内存中存储的方式(如静态存储和动态存储) 存储类别包括:

自动的、静态的、寄存器的、外部的

根据变量的存储类别,可以知道变量的作用域和生存期 7.9.2 局部变量的存储类别 1.自动变量(auto变量)

局部变量,如果不专门声明存储类别,都是动态地分配存储空间的

调用函数时,系统会给局部变量分配存储空间,调用结束时就自动释放空间。因此这类局部变量称为自动变量

自动变量用关键字auto作存储类别的声明 7.9.2 局部变量的存储类别 int f(int a) {?

auto int b,c=3; ? ? ┇ }

可以省略

7.9.2 局部变量的存储类别

2.静态局部变量(static局部变量)

希望函数中的局部变量在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次再调用该函数时,该变量已有值(就是上一次函数调用结束时的值),这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明 例7.16 考察静态局部变量的值。 #include int main()

{ int f(int); int a=2,i; for(i=0;i<3;i++)

printf(“%d\\n”,f(a)); return 0; }

int f(int a)

{ auto int b=0; static c=3; b=b+1; c=c+1;

return(a+b+c); }

调用三次

每调用一次,开辟新a和b,但c不是 例7.16 考察静态局部变量的值。 #include int main()

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第7章 用函数实现模块化程序设计 ppt.Convertor(6)在线全文阅读。

第7章 用函数实现模块化程序设计 ppt.Convertor(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/573177.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: