<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 3.C語言指針變量作為函數參數 函數的參數不僅可以是整型、實型、字符型等數據,還可以是指針類型。它的作用是將一個變量的地址傳送到另一個函數中。 【例10-3】題目同【例10-2】,即輸入的兩個整數按大小順序輸出。今用函數處理,而且用指針類型的數據作函數參數。 ~~~ 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); } ~~~ 對程序的說明: 1) swap是用戶定義的函數,它的作用是交換兩個變量(a和b)的值。swap函數的形參p1、p2是指針變量。程序運行時,先執行main函數,輸入a和b的值。然后將a和b的地址分別賦給指針變量pointer_1和pointer_2,使pointer_1指向a,pointer_2指向b。 2) 接著執行if語句,由于a<b,因此執行swap函數。注意實參pointer_1和pointer_2是指針變量,在函數調用時,將實參變量的值傳遞給形參變量。采取的依然是“值傳遞”方式。因此虛實結合后形參p1的值為&a,p2的值為&b。這時p1和pointer_1指向變量a,p2和pointer_2指向變量b。 3) 接著執行執行swap函數的函數體使*p1和*p2的值互換,也就是使a和b的值互換。函數調用結束后,p1和p2不復存在(已釋放)。 4) 最后在main函數中輸出的a和b的值是已經過交換的值。請注意交換*p1和*p2的值是如何實現的。請找出下列程序段的錯誤: ~~~ swap(int *p1,int *p2){ int *temp; *temp=*p1; /*此語句有問題*/ *p1=*p2; *p2=temp; } ~~~ 請考慮下面的函數能否實現實現a和b互換。 ~~~ swap(int x,int y){ int temp; temp=x; x=y; y=temp; } ~~~ 如果在main函數中用“swap(a,b);”調用swap函數,會有什么結果呢? 【例10-4】請注意,不能企圖通過改變指針形參的值而使指針實參的值改變。 ~~~ 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); } ~~~ 其中的問題在于不能實現如圖所示的第四步(d)。 ![](http://www.lvtao.net/content/uploadfile/201404/2a170ab724fd9463f9e553d5774c728920140421043935.gif) 【例10-5】輸入a、b、c3個整數,按大小順序輸出。 ~~~ swap(int *pt1,int *pt2){ int temp; temp=*pt1; *pt1=*pt2; *pt2=temp; } exchange(int *q1,int *q2,int *q3){ if(*q1<*q2)swap(q1,q2); if(*q1<*q3)swap(q1,q3); if(*q2<*q3)swap(q2,q3); } main(){ int a,b,c,*p1,*p2,*p3; scanf("%d,%d,%d",&a,&b,&c); p1=&a;p2=&b; p3=&c; exchange(p1,p2,p3); printf("\n%d,%d,%d \n",a,b,c); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看