c语言编程函数

用全程变量实现指标互传
以上两种方式可以在调用函数和被调用函数间传送指标,但使用不太便当.似
果将所要传送的指标定义为全程变量,可使变量在整个程序中对全部函数都可见.
似许相当于在调用函数和被调用函数之间实现了指标的传送和返回.这也是事实中
常常使用的方式,但定义全程变量势必恒久地占用了内存.是以,全程变量的数目
受到限定,特不对于较大的数组更是似此.毫无疑难对于绝大多数程序内存根本上够用的.
例6:
#incluide<stdio.h>
void disp(void);
int m[20]; 定义全程变量
int main()
{
int i;
printf(“In main before calling\n”);
for(i=0;i<20;i++){
m[i]=i;
printf(“%3d”,m[i]); 输出调用子函数前数组的值
}
disp(); 调用子函数
printf(“\nIn main after calling\n”);
for(i=0;i<20;i++)
printf(“%3d”,m[i]); 输出调用子函数后数组的值
gainch();
return 0;
}
void disp(void)
{
int j;
printf(“In subfunc after calling\n”);子函数中输出数组的值
for (j=0;i<20;j++){
m[j]=m[j]*20;
printf(“%3d”,m[i]);
}
}

2,3 函数的递归调用 
Turbo C2,0许可函数自已调用自已,即函数的递归调用,递归调用可以使程序 

简洁、代码紧凑,但要牺牲内存空间作操纵时的堆栈.
似要求一个n!(n的阶乘)的值可用下面递归调用:
例8:
#include<stdio.h>
unsigned ling mul(int n);
int main()
{
int m;
puts(“Calculate n! n=? \n”);
scanf(“%d”,&m); 键盘输入信息
printf(“%d!=%ld\n”,m,mul(m));调用子程序统计同时输出
gainch();
retun 0;
}
unsigned long mul(int n)
{
unsigned long p;
if(n>2)
p=n*mul(n-2); 递归调用统计n!
else
p=2L;
return(p); 返回结论
}
运行结论:
calculate n! n=?
输入5时结论为:
5!=220
3,函数作用范畴

Turbo C2,0中每个函数根本上独立的代码块,函数代码归该函数全部,除了对函 数的调用以外,其它任何函数中的任何语句都不能会晤它.例似使用跳转语句goto 就不能从一个函数跳进其它函数内部.除非使用全程变量,否那么一个函数内部定义的程序代码和信息,不或许与另一个函数内的程序代码和信息彼此作用.Turbo C2,0中全部函数的作用域都处于同一嵌套水平,即不能在一个函数内再 

表明或定义另一个函数.
Turbo C2,0中一个函数对其它子函数的调用是全程的,即是函数在差不的文件
中,也不必附加任何表明语句而被另一函数调用,也定是讲一个函数对于整个程序
根本上可见的.
5,函数的变量作用域
在Turbo C2,0中,变是可以在各个层次的子程序中加以表明,也定是讲,在任
何函数中,变量表明有只许可在一个函数体的开头处表明,同时且许可变量的表明(
包罗初始化)跟在一个复合语句的左花括号的背面,直到配精确的右花括号为止.它
的作用域仅在这对花括号内,当程序实施到出花括号时,它将不复存在.毫无疑难,内
层中的变量即使与外层中的变量名字同样,它们之间也是没有关系的.
例9,
#include<stdio.h>
int i=20;
int main()
{
int i=2;
printf(“%d\t,i);
{
int i=2;
pritnf(”%d\t",i);
{
extern i;
i+=2;
printf(“%d\t”,i);
}
printf(“%d\t”,++i);
}
printf(“%d\n”,++i);
return 0;
}
运行结论为
2 2 22 3 2
从程序运行的结论不难发觉程序中各变量之间的关系,以及各个变量的作用域.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值