• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
预防程序与TurboC常见错误解析(3)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
预防程序与TurboC常见错误解析(3)
软件发布 预防程序与TurboC常见错误解析(3)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 计算机等级考试 >> 计算机等级考试动态 >> 预防程序与TurboC常见错误解析(3)

预防程序与TurboC常见错误解析(3)

添加时间: 2007-5-7 3:57:25  作者: 计算机等级考试认证参考  阅读次数:39   来源: http://www.d9soft.com

       

         str=match(c, s);         /*调用子函数*/
          putchar(' ');
          puts(str);               /*输出子函数返回的指针所指的字符串*/
          getch();
          return 0;
     }
     char *match(char c, char *s)
     {
          int i=0;
          while(c!=s[i]&&s[i]!=' ')/*找字符串中指定的字符*/
               i++;
          return(&s[i]);           /*返回所找字符的地址*/
     }

    三、用全程变量实现参数互传
    以上两种办法可以在调用函数和被调用函数间传递参数, 但使用不太方便。如果将所要传递的参数定义为全程变量, 可使变量在整个程序中对所有函数都可见。这样相当于在调用函数和被调用函数之间实现了参数的传递和返回。这也是实际中经常使用的方法, 但定义全程变量势必长久地占用了内存。因此, 全程变量的数目受到限制, 特别对于较大的数组更是如此。当然对于绝大多数程序内存都是够用的。
    例6:
     #incluide
     void disp(void);
     int m[10];          /*定义全程变量*/
     int main()
     {
          int i;
          printf("In main before calling ");
          for(i=0; i<10; i++){
            m[i]=i;
            printf("=", m[i]);   /*输出调用子函数前数组的值*/
          }
          disp();                  /*调用子函数*/
          printf(" In main after calling ");
          for(i=0; i<10; i++)

           printf("=", m[i]);   /*输出调用子函数后数组的值*/
          getch();
          return 0;
     }
     void disp(void)
     {
          int j;
          printf("In subfunc after calling ");/*子函数中输出数组的值*/
          for (j=0; i<10; j++){
               m[j]=m[j]*10;
               printf("=", m[i]);
          }
     }


    2.3 函数的递归调用
    Turbo C2.0允许函数自己调用自己, 即函数的递归调用, 递归调用可以使程序简洁、代码紧凑, 但要牺牲内存空间作处理时的堆栈。
    如要求一个n!(n的阶乘)的值可用下面递归调用:
    例8:
      #include
      unsigned ling mul(int n);
      int main()
     {
          int m;
          puts("Calculate n! n=? ");
          scanf("%d", &m);         /*键盘输入数据*/
          printf("%d!=%ld ", m, mul(m));/*调用子程序计算并输出*/
          getch();
          retun 0;
      }
     unsigned long mul(int n)
     {
          unsigned long p;
          if(n>1)
               p=n*mul(n-1);       /*递归调用计算n!*/
          else
               p=1L;
          return(p);               /*返回结果*/

 
     }
运行结果:
          calculate n!  n=?
输入5时结果为:
          5!=120

    3. 函数作用范围

    Turbo C2.0中每个函数都是独立的代码块, 函数代码归该函数所有, 除了对函数的调用以外, 其它任何函数中的任何语句都不能访问它。例如使用跳转语句goto就不能从一个函数跳进其它函数内部。除非使用全程变量, 否则一个函数内部定义的程序代码和数据, 不会与另一个函数内的程序代码和数据相互影响。
    Turbo C2.0中所有函数的作用域都处于同一嵌套程度, 即不能在一个函数内再说明或定义另一个函数。
    Turbo C2.0中一个函数对其它子函数的调用是全程的, 即是函数在不同的文件中, 也不必附加任何说明语句而被另一函数调用, 也就是说一个函数对于整个程序都是可见的。

    4. 函数的变量作用域
    在Turbo C2.0中, 变是可以在各个层次的子程序中加以说明, 也就是说, 在任何函数中, 变量说明有只允许在一个函数体的开头处说明, 而且允许变量的说明(包括初始化)跟在一个复合语句的左花括号的后面, 直到配对的右花括号为止。它的作用域仅在这对花括号内, 当程序执行到出花括号时, 它将不复存在。当然, 内层中的变量即使与外层中的变量名字相同, 它们之间也是没有关系的。
    例9.
     #include
     int i=10;
     int main()
     {
          int i=1;
          printf("%d , i);
          {
               int i=2;
               pritnf("%d ", i);
               {
                    extern i;
                    i+=1;
                    printf("%d ", i);
               }
               printf("%d ", ++i);
          }
          printf("%d ", ++i);
          return 0;
     }
运行结果为
     1    2    11   3    2

 

上下文章:

 

上一篇文章: 预防程序与TurboC常见错误解析(5) 下一篇文章: C语言程序设计初步(8)

相关文章:

  • Vista下光盘刻录Nero 8常见问题
  • Sendmail 554 错误的解决
  • AV杀手变种强行关闭杀度软件与下载恶意程序
  • [Oracle]Oracle10g闪回恢复区详细解析
  • 常见问题诊断方法---(常见错误篇)

相关软件:

  • FTP远程文件同步更新程序 1.0.0.0
  • 关闭有害木马端口程序
  • DOS万能驱动合集 (含有常见所有驱动)
  • 终极程序加密器 2.98
  • UC263成人视频小电影程序
  • TurboCAD 2D V6.5 LT

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

计算机等级考试分类导航

  • 计算机等级考试动态
  • 计算机一级考试
  • 计算机二级考试
  • 计算机三级考试
  • 计算机四级考试

本类经典文章推荐

  • 全国计算机等级考试三级网络技术(...
  • 三级网络技术复习笔记(第1-2章)
  • 三级笔试样题(PC技术)
  • 三级数据库技术样题
  • 三级网络技术复习笔记(5-7)
  • 三级网络技术复习笔记(第3-4章)
  • 笔试样题(网络技术)
  • 机考如何避免范围性错误
  • 2003年最新三级网络模拟题(2)
  • 全国计算机等级考试三级网络技术部...

计算机等级考试动态阅读排行

  • 计算机等级考试:VFp练习题1
  • 全国计算机等级考试三级网络技术(...
  • 完整的计算机等级考试上机模拟系统
  • 计算机等级考试:VFp练习题2
  • 历年操作系统论述题及答案(2)
  • 三级网络技术复习笔记(第1-2章)
  • 上海:计算机等级考试开始报名
  • 计算机二级VB软件环境、考试时间、...
  • 2005年全国计算机等级考试全真模拟...
  • 职称计算机考试报名今年最后一次

计算机等级考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试上机考试应试技...

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有