亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 12.學c51的基礎 12《 函 數 》.txt

?? 學習51單片機必備的一些C語言基礎知識
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
    return語句可以向調用函數返回值, 但這種方法只能返回一個參數, 在許多情況下要返回多個參數, 這是用return語句就不能
滿足要求。Turob C2.0提供了另一種參數傳遞的方法, 就是調用函數向被調用函數傳遞的形式參數不是傳遞變量本身, 而是傳遞變
量的地址, 當子函數中向相應的地址寫入不同的數值之后, 也就改變了調用函數中相應變量的值, 從而達到了返回多個變量的目的。
     例4:
     #include<stdio.h>
     void subfun(int *m, int *n);                      /*說明子函數*/
     int main()
     {
          int i, j;
          printf("i, j=?\n");
          scanf("%d, %d", &i, &j);                     /*從鍵盤輸入2個整數*/
          printf("In main before calling\n",           /*輸出此2數及其乘積*/
                 "i=%-4d j=%-4d i*j=%-4d\n", i, j, i*j);
          subfun(&i, &j);                              /*以傳送地址的方式調用子函數*/
          printf("In main after calling\n",            /*調用子函數后輸出變量值*/
                 "i=%-4d j=%-4d i*j=%-4d\n", i, j, i*j);
          getch();
          return 0;
     }
     void subfun(int *m, int *n)
     {
          *m=*m+2;
          *j=*i-*j;
          printf("In subfun after calling\n",          /*子函數中輸出變量值*/
                 "i=%-4d j=%-4d i*j=%-4d\n", *i, *j, *i**j);
      }

    上例中, *i**j表示指針i和j所指的兩個整型數*i和*j之乘積。
    另外, return語句也可以返回一個指針, 舉例如下。
    下例中先等待輸入一字符串, 再等待輸入要查找的字符, 然后調用match() 函數在字符串中查找該字符。若有相同字符, 則返
回一個指向該字符串中這一位置的指針, 如果沒有找到,則返回一個空(NULL)指針。
    例5:
     #include<stdio.h>
     char *match(char c, char *s);
     int main()
     {
          char s[40], c, *str;
          str=malloc(40);                          /*為字符串指什分配內存空間*/
          printf("Please input character string:");
          gets(s);                                 /*鍵盤輸入字符串*/
          printf("Please input one character:");
          c=getche();                              /*鍵盤輸入字符*/
          str=match(c, s);                         /*調用子函數*/
          putchar(''\n'');
          puts(str);                               /*輸出子函數返回的指針所指的字符串*/
          getch();
          return 0;
     }
     char *match(char c, char *s)
     {
          int i=0;
          while(c!=s[i]&&s[i]!=''\n'')               /*找字符串中指定的字符*/
               i++;
          return(&s[i]);                           /*返回所找字符的地址*/
     }


    三、用全程變量實現參數互傳

    以上兩種辦法可以在調用函數和被調用函數間傳遞參數, 但使用不太方便。如果將所要傳遞的參數定義為全程變量, 可使變量
在整個程序中對所有函數都可見。 這樣相當于在調用函數和被調用函數之間實現了參數的傳遞和返回。這也是實際中經常使用的方
法, 但定義全程變量勢必長久地占用了內存。因此, 全程變量的數目受到限制, 特別對于較大的數組更是如此。當然對于絕大多數
程序內存都是夠用的。
    例6:
     #incluide<stdio.h>
     void disp(void);
     int m[10];                                 /*定義全程變量*/
     int main()
     {
          int i;
          printf("In main before calling\n");
          for(i=0; i<10; i++){
            m[i]=i;
            printf("%3d", m[i]);                /*輸出調用子函數前數組的值*/
          }
          disp();                               /*調用子函數*/
          printf("\nIn main after calling\n");
          for(i=0; i<10; i++)
            printf("%3d", m[i]);                /*輸出調用子函數后數組的值*/
          getch();
          return 0;
     }
     void disp(void)
     {
          int j;
          printf("In subfunc after calling\n"); /*子函數中輸出數組的值*/
          for (j=0; i<10; j++){
               m[j]=m[j]*10;
               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));  /*調用子程序計算并輸出*/
          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<stdio.h>
     int i=10;
     int main()
     {
          int i=1;
          printf("%d\t, i);
          {
               int i=2;
               pritnf("%d\t", i);
               {
                    extern i;
                    i+=1;
                    printf("%d\t", i);
               }
               printf("%d\t", ++i);
          }
          printf("%d\n", ++i);
          return 0;
     }

運行結果為
     1    2    11   3    2

從程序運行的結果不難看出程序中各變量之間的關系, 以及各個變量的作用域。  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美高清一区| 国产91丝袜在线18| 亚洲人成亚洲人成在线观看图片| 日韩欧美国产一区二区在线播放 | 粉嫩av一区二区三区| 老司机精品视频导航| 欧美bbbbb| 日本va欧美va欧美va精品| 日本午夜一区二区| 蜜臀99久久精品久久久久久软件| 青青青伊人色综合久久| 另类综合日韩欧美亚洲| 久久99久久99| 国产成人免费在线观看| 成人黄色小视频在线观看| 97精品超碰一区二区三区| 色欧美日韩亚洲| 欧美老肥妇做.爰bbww视频| 欧美一区二区视频网站| 久久精品夜夜夜夜久久| 国产精品国产精品国产专区不片| 亚洲国产精品成人久久综合一区 | 一区二区三区四区不卡视频| 亚洲第一狼人社区| 激情图片小说一区| 成人h动漫精品一区二区| 在线亚洲高清视频| 日韩西西人体444www| 国产精品丝袜一区| 亚洲国产欧美在线| 国产一区二区成人久久免费影院| 波多野结衣精品在线| 欧美色精品在线视频| 精品国产区一区| 亚洲人123区| 麻豆国产精品一区二区三区| 国产91在线|亚洲| 欧美日韩激情一区二区三区| 日韩精品中午字幕| 亚洲免费资源在线播放| 老司机精品视频一区二区三区| 国产**成人网毛片九色 | 免费看黄色91| 99精品欧美一区| 精品国产乱码91久久久久久网站| 亚洲国产电影在线观看| 三级在线观看一区二区| 97精品电影院| 久久精品亚洲一区二区三区浴池| 一区二区三区国产精品| 国产99久久久久| 欧美一区二区三区在线观看视频| 国产精品久久久久久久久搜平片| 美女在线观看视频一区二区| 91在线播放网址| 国产亚洲一区二区在线观看| 日本午夜一区二区| 精品视频在线免费| 亚洲精品美国一| 成人开心网精品视频| 久久蜜桃av一区二区天堂| 日韩精品国产欧美| 精品视频一区 二区 三区| 亚洲丝袜美腿综合| 成人黄色综合网站| 日本一区二区免费在线| 国产美女av一区二区三区| 欧美一区二区视频免费观看| 亚洲国产精品一区二区久久恐怖片| 成人涩涩免费视频| 国产欧美精品一区二区色综合朱莉| 另类的小说在线视频另类成人小视频在线| 一本大道久久a久久精二百| 国产拍欧美日韩视频二区| 久久精品国产成人一区二区三区| 精品视频一区三区九区| 亚洲成人综合视频| 欧美亚洲愉拍一区二区| 一区二区三区久久久| 91浏览器打开| 一区2区3区在线看| 欧美自拍偷拍一区| 亚洲bdsm女犯bdsm网站| 91麻豆精品国产自产在线观看一区| 亚洲精品中文在线影院| 日本精品裸体写真集在线观看| 国产蜜臀av在线一区二区三区| 国产成人av电影免费在线观看| 欧美成人福利视频| 国产精品自拍在线| 国产精品美女久久久久aⅴ国产馆| 国产一区二区三区四区五区美女| 久久综合网色—综合色88| 韩国精品在线观看| 中文字幕永久在线不卡| 一本到不卡精品视频在线观看 | 免费在线观看不卡| 久久午夜国产精品| 成人app软件下载大全免费| 一区二区三区精品久久久| 777午夜精品视频在线播放| 免费精品视频在线| 久久精品日产第一区二区三区高清版| 国产ts人妖一区二区| 中文字幕在线不卡国产视频| 欧美日韩卡一卡二| 黄色精品一二区| 亚洲色图制服丝袜| 欧美一区二区播放| 国产成人在线免费| 一区二区三区久久久| 久久亚洲精品小早川怜子| 91在线观看视频| 麻豆精品一二三| 亚洲欧美日韩国产手机在线| 欧美日精品一区视频| 风间由美一区二区av101| 亚洲高清视频在线| 欧美国产综合色视频| 欧美日韩久久久| 不卡一区二区在线| 国内精品免费在线观看| 一卡二卡三卡日韩欧美| 国产日韩欧美精品一区| 欧美色图片你懂的| 99国产精品一区| 国产精品一区一区| 五月婷婷激情综合网| 国产精品久久三区| 久久综合久久综合亚洲| 欧美人与z0zoxxxx视频| 97久久精品人人澡人人爽| 国产麻豆精品一区二区| 天涯成人国产亚洲精品一区av| 国产欧美久久久精品影院| 日韩午夜三级在线| 欧美三级在线看| 91在线视频观看| 成人av中文字幕| 国产白丝网站精品污在线入口| 日韩精品每日更新| 亚洲第一二三四区| 亚洲午夜精品一区二区三区他趣| 国产精品久久久久久久久搜平片| 欧美精品一区二区精品网| 在线综合视频播放| 欧美日韩激情在线| 欧美日本韩国一区二区三区视频| av不卡免费在线观看| 国产剧情在线观看一区二区| 韩国成人精品a∨在线观看| 国内精品伊人久久久久av一坑| 人人精品人人爱| 日本亚洲三级在线| 免费不卡在线观看| 日韩激情中文字幕| 天天色图综合网| 日本一道高清亚洲日美韩| 美女视频一区二区三区| 日本怡春院一区二区| 麻豆成人久久精品二区三区红 | 久久精品国产秦先生| 老司机精品视频导航| 韩国女主播成人在线| 国产一区二区三区黄视频| 国产精品一区二区久激情瑜伽| 国产福利电影一区二区三区| caoporen国产精品视频| 色呦呦国产精品| 欧美电影影音先锋| 精品少妇一区二区三区在线视频| 日韩免费看的电影| 久久久久久久网| 国产精品毛片大码女人| 亚洲人成在线观看一区二区| 亚洲主播在线播放| 奇米影视一区二区三区| 国产成人亚洲综合a∨猫咪| 99热99精品| 欧美日韩成人在线| 久久综合狠狠综合久久综合88 | 国产精品456| 色婷婷综合中文久久一本| 欧美日韩精品欧美日韩精品一| 日韩欧美二区三区| 国产精品美女久久久久aⅴ| 亚洲成av人在线观看| 国产乱人伦偷精品视频免下载| 粉嫩高潮美女一区二区三区 | 欧美电影精品一区二区| 国产欧美视频一区二区三区| 伊人性伊人情综合网| 久久精品99国产国产精| av在线播放成人| 日韩亚洲欧美一区二区三区| 亚洲图片欧美激情| 麻豆精品视频在线观看免费| 91美女视频网站| 欧美精品一区二区三区蜜桃视频| 亚洲欧美日韩成人高清在线一区|