<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

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

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            C語言中函數之間地址傳遞方式

            時間:2025-09-28 08:29:07 C語言 我要投稿

            C語言中函數之間地址傳遞方式

              導語:C語言中函數之間的數據傳遞方式有值傳遞、引用傳遞、地址傳遞。下面就由小編為大家介紹一下C語言中函數之間地址傳遞方式,歡迎大家閱讀!

              1 函數之間數據傳遞方式分類

              C語言程序是由函數組成的。設計C語言程序時,通常將一個大的程序按功能分成若干個較小的模塊,每個模塊編寫成結構清晰、接口簡單、容易理解的程序段,即函數。這種方法可建立公用模塊,消除重復工作,提高程序開發效率。[1]從函數的形式來看,函數可分為無參函數和有參函數。在調用有參函數時,主調函數與被調用函數之間有數據傳遞,也就是說,主調函數可以將數據傳遞給被調函數使用,被調函數中的數據也可以帶回來給主調函數使用。

              值傳遞:數據只能從實參單向傳遞給形參,稱為“按值”傳遞。當基本類型變量作為實參時,在函數調用過程中,形參和實參占據不同的存儲空間,形參的改變對實參的值不產生任何影響

              引用傳遞:使實參和形參共用一個地址,即所謂“引用傳遞”。這種傳遞方式,無論對哪個變量進行修改,都是對同一地址內存空間的內容進行修改,其實參變量與它的引用即形參變量,總是具有相同的值。例如程序:

              2 函數之間的地址傳遞

              2.1 形參為指針變量時函數之間的數據傳遞。如果函數的形參為指針類型時,對應的實參類型必須與形參的基類型相同。

              例如程序:調用swap函數,用指針傳遞的方式交換主函數中變量x和y中的數據。

              函數之間值的傳遞是單向傳遞,也就是說函數只能通過實參把值傳遞給形參,若形參值改變,對實參不會產生影響;把數據從被調函數返回到主調函數的唯一途徑就是通過return語句,且只能返回一個數據。若是采用以上通過傳遞地址值的方式,可以在被調用函數中對主調函數中的變量進行引用,通過改變形參的值而讓實參的值得到相應改變,這樣就可以實現把多個數據從被調用函數返回到主調用函數。

              2.2 一維數組名作實參時函數之間的數據傳遞。函數之間在進行數據傳遞時,數組元素可以作為實參傳遞給形參,這時的數組元素與普通變量一樣,這種傳遞實際上就是值的傳遞。在C語言中,一維數組是由若干類型相同的數組元素組成的,因為數組名本是一個地址值,通常可以把數組名作為實參傳送,對應的形參就用指針變量,其基類型與數組的類型要求一致。在函數間進行數據傳遞時,可以通過此指針變量來引用主調函數中對應的數組元素,從而可以實現對主調函數中對應的數組元素進行數據處理。

              當數組名作為實參時,函數調用arrin(a)對應的形參除了指針外,對應函數首部還可以寫成arrin(int pa[])和arrin(int pa[N])兩種形式。雖然說明的形式與數組的說明相同,但C編譯程序時都把pa處理成以上的指針形式。另外,上例中被調用函數除了通過指針引用數組元素*(pa+i)外,還可以寫成pa[i]的形式。

              2.3 二維數組名作實參時函數之間的數據傳遞。當二維數組名作為實參時,被調函數的形參必須是一個行指針變量。例如,若主函數有以下二維數組定義:double a[M][N];則被調函數fun的首部可以是以下三種形式之一:(1)fun ( double (*pa)[N]);(2)fun (double pa[M][N]);(3)fun ( double pa[ ][N])。以上無論哪種形式,與一維數組數據傳遞一樣,系統都將把pa處理成一個指針,但是一個行指針。其處理方式一樣,系統只為形參開辟一個存放地址的存儲單元。

              2.4 指針數組作實參時函數之間的數據傳遞。當指針數組作為實參時,對應的形參應當是一個指向指針的指針。因為函數傳遞的是一維數組指針數組名,所以參數的定義與2.2中的一維數組名作實參的形式類似。

              3 結束語

              引用傳遞雖然可以通過改變形參的值而影響實參,操作比較靈活,但進行批量數據傳遞有明顯缺陷。對數組多個元素以及規模較大的結構體數據進行操作,只能選用地址傳遞的方式,這種傳遞方式只需在被調函數中開辟一個存放地址的4字節的存儲空間,不需要另外開辟形參的存儲空間,實際參數和形式參數對應于相同的內存單元,因此,對形式參數的操作也就是對實際參數的操作。這種傳遞方式效率高,應用靈活,功能強大。


            【C語言中函數之間地址傳遞方式】相關文章:

            在C語言中函數調用方式的區別01-07

            C語言中函數的區分10-09

            C語言中gets()函數知識01-23

            c語言中time函數的用法10-26

            C語言中關于時間的函數02-19

            C語言中strpbr()函數的用法02-17

            C/C++函數調用的方式09-23

            C語言中isalnum()函數和isalpha()函數的對比03-14

            C語言中編寫可變參數函數12-07

            • 相關推薦

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

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

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院