<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      第10章 指針(七) 應(yīng)用1------函數(shù)間數(shù)據(jù)的雙向傳遞

       

             聲明:文中觀點(diǎn)僅代表個(gè)人,其中文字、圖片未經(jīng)本人許可,不得部分或全部轉(zhuǎn)載,違者所造成影響后后果自負(fù)!聯(lián)系本人方式:80368704@qq.com QQ:80368704
             
             忠告:函數(shù)
      概念過關(guān)的往下看,否則回到函數(shù)的相關(guān)章節(jié)去?。。。?!
             忠告:指針
      概念過關(guān)的往下看,否則回到指針的前面六節(jié)去?。。。。?/span>
             警告:上述2個(gè)內(nèi)容沒有過關(guān)的,往下看,無異于對(duì)你學(xué)習(xí)指針信心的自殺!因?yàn)樵谙旅?,我將不再把你?dāng)作最初級(jí)的程序?qū)W習(xí)者,不再做最初級(jí)的解釋了,我假設(shè),你已經(jīng)是進(jìn)階者!

             函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是變量的指針,它將一個(gè)變量的首地址從主調(diào)函數(shù)傳送到另一個(gè)函數(shù)中,以間接的方式,實(shí)現(xiàn)了函數(shù)間數(shù)據(jù)雙向傳遞。譚浩強(qiáng)先生用一個(gè)簡(jiǎn)單的例子:輸入兩個(gè)整數(shù),按大小順序輸出,函數(shù)處理,說明了指針的這類應(yīng)用。

      1、【例】輸入的兩個(gè)整數(shù)按大小順序輸出, 用函數(shù)處理,而且用指針類型的數(shù)據(jù)作函數(shù)參數(shù)。

      swap(int *p1,int *p2)
      {
         int temp;

         temp=*p1;
         *p1=*p2;
         *p2=temp;
      }

      main() {

      int a,b;
          int *pointer_1,*pointer_2;

          scanf("%d,%d",&a,&b);
          pointer_1=&a;pointer_2=&b;
          if(a<b)
                swap(pointer_1,pointer_2);
          printf("/n%d,%d/n",a,b);
      }


      對(duì)程序的說明:
             swap是用戶定義的函數(shù),它的作用是交換兩個(gè)變量(ab)的值。swap函數(shù)的形參p1p2是指針變量。程序運(yùn)行時(shí),先執(zhí)行main函數(shù),輸入ab的值。然后將ab的地址分別賦給指針變量pointer_1pointer_2,使pointer_1指向apointer_2指向b。

       

            接著執(zhí)行if語(yǔ)句,由于ab,因此執(zhí)行swap函數(shù)。注意實(shí)參pointer_1pointer_2是指針變量,在函數(shù)調(diào)用時(shí),將實(shí)參變量的值傳遞給形參變量。采取的依然是值傳遞方式。因此虛實(shí)結(jié)合后形參p1的值為&ap2的值為&b。這時(shí)p1pointer_1指向變量a,p2pointer_2指向變量b

       

            接著執(zhí)行執(zhí)行swap函數(shù)的函數(shù)體使*p1*p2的值互換,也就是使ab的值互換。

       

      函數(shù)調(diào)用結(jié)束后,p1p2不復(fù)存在(已釋放)如圖。

       

      最后在main函數(shù)中輸出的ab的值是已經(jīng)過交換的值。

      進(jìn)一步分析如下:
             表面上看,由于a和b是main()的局部變量,他們的作用域就是main()的函數(shù)體,因此a,b對(duì)于swap()是不可見的,即swap()不能對(duì)a和b賦值,也不能使用a和b中的數(shù)據(jù)進(jìn)行運(yùn)算;
             但是,
      當(dāng)我們通過使用指針參數(shù)pointer1和pointer2將&a、&b這2個(gè)地址從main()傳入了swap();那么,swap()通過該地址,就可以找到main()的a,b,從而使得swap()就象main()一樣,可以直接對(duì)a、b賦值,或直接用a、b中的值進(jìn)行運(yùn)算。
             這樣一來,主調(diào)函數(shù)main()可以存取a、b,而被調(diào)函數(shù)swap()通過傳入的地址,也可以存取a、b。我們說a、b在main()和swap()間被共享了。
             既然變量都被共享了,那么main()就可以通過a、b給swap()傳送數(shù)據(jù);同理swap()也可以通過a、b給main()傳送數(shù)據(jù)了,這就是說,我們實(shí)現(xiàn)了這2個(gè)函數(shù)間的雙向數(shù)據(jù)傳遞。
             恰可謂明修棧道,暗渡陳倉(cāng)?。?!


      2、請(qǐng)注意交換*p1*p2的值是如何實(shí)現(xiàn)的。請(qǐng)找出下列程序段的錯(cuò)誤

      swap(int *p1,int *p2)
      {int *temp;
      *temp=*p1;      /*
      此語(yǔ)句有問題*/
      *p1=*p2;
      *p2=temp;
      }

             上面的錯(cuò)誤在于int *temp是一個(gè)野指針?。?!當(dāng)你定義了一個(gè)指針A,但是沒有明確指定A指向哪個(gè)變量,那么A就叫野指針;

             一定要給你的指針變量賦初值,不要讓他成為野指針,否則他會(huì)桀驁不馴,成為一個(gè)很危險(xiǎn)的東西。

             遙想當(dāng)年,他搞死過我的程序,也使我的系統(tǒng)死過機(jī),甚至摧毀了我的操作系統(tǒng).......;你要格外小心,不要讓世界末日降臨。

      3、請(qǐng)考慮下面的函數(shù)能否實(shí)現(xiàn)實(shí)現(xiàn)ab互換。

      swap(int x,int y)

      {int temp;

      temp=x;

      x=y;

      y=temp;

      }


      如果在main函數(shù)中用swap(a,b);調(diào)用swap函數(shù),會(huì)有什么結(jié)果呢?請(qǐng)看下圖所示。

       

      上面的分析,再次驗(yàn)證了函數(shù)參數(shù)的單向值傳遞原則?。。?/strong>

      4、【例】請(qǐng)注意,不能企圖通過改變指針形參的值而使指針實(shí)參的值改變。

      swap(int *p1,int *p2)

      {int *p;

      p=p1;

      p1=p2;

      p2=p;

      }

      main()

      {

      int a,b;

      int *pointer_1,*pointer_2;

          scanf("%d,%d",&a,&b);

          pointer_1=&a;pointer_2=&b;

          if(a<b) swap(pointer_1,pointer_2);

               printf("/n%d,%d/n",*pointer_1,*pointer_2);

      }

       

      其中的問題在于不能實(shí)現(xiàn)如圖所示的第四步(d)。

       

             函數(shù)使用指針作為參數(shù)時(shí),作為函數(shù)參數(shù)的一種,指針參數(shù)仍然也必須遵守單向值傳遞的原則,即指針參數(shù)中地址在被調(diào)函數(shù)中的改變,不會(huì)返回到主調(diào)函數(shù)


       

      posted @ 2009-03-26 13:08  .NET快速開發(fā)框架  閱讀(418)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲人成网站在线观看播放不卡 | 亚洲欧洲日产国码久在线| 国产区精品福利在线熟女| 国产精品无码无需播放器| 亚洲人成网站18禁止| 2021国产精品视频网站| 久久人妻精品国产| 国产不卡av一区二区| 国产免费无遮挡吸奶头视频| 国产小受被做到哭咬床单GV| 國產尤物AV尤物在線觀看| 日韩精品中文字幕有码| 少妇人妻无码专区在线视频| 热久久美女精品天天吊色| 成年午夜无码av片在线观看| 国产麻豆剧果冻传媒一区| 天天躁夜夜躁av天天爽| 久久精品国产亚洲av久| 亚洲精品毛片一区二区| 特克斯县| 性欧美乱熟妇xxxx白浆| 欧美性群另类交| 亚洲欧美日韩综合一区二区 | 亚洲中文字幕久久精品码| 好爽毛片一区二区三区四| 亚洲精品无码高潮喷水在线 | 亚洲精品日本一区二区| 91福利视频一区二区| 好硬好湿好爽好深视频| 加勒比无码人妻东京热| 粉嫩一区二区三区精品视频| 产综合无码一区| 亚洲深深色噜噜狠狠网站| 国产精品亚洲综合网一区| 伊在人间香蕉最新视频| 高清偷拍一区二区三区| 中文日产幕无线码一区中文| 亚洲国产成人不卡高清麻豆| 赣榆县| 最新国产精品拍自在线观看| 久久精品人妻少妇一区二|