c语言递归函数变量作用域,C语言课程变量的作用域和生存周期、递归.ppt

C语言课程变量的作用域和生存周期、递归

函数的定义和函数的调用 函数定义格式: 返回值类型 函数名(类型 参数1,类型 参数2,…) { 函数体 return 表达式; } 函数调用格式: 函数名(参数1,参数2,…); 函数定义的语法远比函数调用的要严格很多 函数原型 函数和变量一样,要先定义后使用 如果函数调用出现在函数定义之前,必须使用函数原型说明该函数有几个参数,参数的类型,和返回值的类型,才能保证编译器正常完成工作 示例 double add(double,double); int main() { …… add(a,b); return 0; } double add(double x,double y) { …… } 对函数接口加以注释说明 /* 函数功能:实现××××功能 函数参数:参数1,表示××××× 参数2,表示××××× 函数返回值: ××××× */ 返回值类型 函数名(参数表) {函数体return 表达式; } 主要内容 变量的作用域和生存周期 函数的嵌套调用和模块化原则 函数的递归调用 重点 & 难点 变量的作用域和生存周期 重点、难点 模块化原则 重点、难点 需要实践和经验 函数的递归调用 难点 变量的作用域 #include int main() { int a = 1; { int a = 2; printf("In the INNER block, a = %d\n", a); } printf("In the OUTER block, a = %d\n", a) return 0; } #include int main() { int a; { int b; { int c; a = 0; b = 0; c = 0; d = 0; } a = 0; b = 0; c = 0; d = 0; } { int d; a = 0; b = 0; c = 0; d = 0; } a = 0; b = 0; c = 0; d = 0; return 0; } 比较两程序 #include int main() { int a = 3, b = 5,temp; printf("before swap,a=%d,b=%d",a,b); temp = a; a = b; b = temp; printf("after swap,a=%d,b=%d",a,b); return 0; } #include void swap(int a,int b) { int temp; temp = a; a = b; b = temp; } int main() { int a = 3, b = 5,temp; printf("before swap,a=%d,b=%d",a,b); swap(a,b); printf("after swap,a=%d,b=%d",a,b); return 0; } 说明 被大括号括起来的区域,叫做语句块(Block) 函数体、循环体、分支结构都可以看作语句块 变量的作用域规则是: 每个变量仅在定义它的语句块内(包含下级语句块)内有效,并拥有自己的内存空间 同一语句块内不可以定义同名变量,不同语句块内可以定义同名变量 变量的作用是表征变量的作用范围,属于空间概念 按照变量的作用域,变量可以分为全局变量和局部变量 #include int a = 3, b = 5; //定义全局变量 void swap() { int temp; temp = a; a = b; b = temp; } int main() { printf("before swap,a=%d,b=%d",a,b); swap(a,b); printf("after swap,a=%d,b=%d",a,b); return 0; } #include extern int a,b; void swap() { int temp; temp = a; a = b; b = temp; } int main() { printf("before swap,a=%d,b=%d",a,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值