指標傳遞 引用傳遞 值傳遞

2021-07-22 05:59:14 字數 1229 閱讀 4482

用指標變數可以表示各種資料結構,能很方便地使用陣列,字串和鍊錶。並不是直接運算元據,而且它可以直接和記憶體打交道,使用稍有不慎,就會造成程式崩潰。

使用指標的好處:

1) 在資料傳輸時,如果資料塊較大,這時就可以使用指標傳遞位址而不是實際資料。提高傳輸速度,又節省大量記憶體。

2)在資料結構中,鍊錶、樹、圖等大量的應用都指標。

3)可以動態分配記憶體。

野指標:指向不可用記憶體的指標。任何指標變數在建立時,不會自動成為null空指標,其預設值是隨機的。所以指標在建立的同時應當初始化,或者將指標置為null,或者指向合法的記憶體,而不應該置之不理,否則就會成為野指標。而同時由於指標被釋放(free/delete)後,未能將其配置為null,也會導致該指標變為野指標。雖然free/delete把指標指向的記憶體給釋放掉了,但是指標本身沒有釋放掉。第三種是指標操作超出了變數的作用範圍。

空指標:表示指標處於閒置狀態,沒有指向有意義的內容。

1)引用是某塊記憶體的別名,指標指向一塊記憶體,它的內容是所指記憶體

的位址。

指標是個實體,而引用僅是個別名。

2)引用之後只能在定義時初始化一次,之後不能被改變。指標卻是可變的。

3)引用不可以為空,指標可以為空。引用使用時不需要解引用(*),而指標需要解引用。

4)sizeof引用得到的是所指向的變數的大小,而sizeof指標 得到的是指標本身的大小。

5)指標和引用的自增(++)運算意義不一樣。

對於指標而言,只能進行==或!=運算。

不能建立引用陣列。

不能建立指向引用的指標。可以建立指標變數的引用。

不能建立引用的引用。

值傳遞:形參是實參的拷貝,改變形參的值不會影響外部實參的值。從被呼叫的角度來講,值傳遞是單向的,引數的值只能傳入,不能傳出。

引用傳遞:形參是實參的「別名」,對形參的操作其實就是對實參的操作,在引用傳遞的過程中,被調函式的形式引數雖然也作為區域性變數在棧中開闢了記憶體空間,但是這時存放的是主調函式存放進來的實參變數的位址。被掉函式對形參的任何操作都被處理成間接位址,即通過棧中存放的位址訪問主調函式中的實參變數。正因為如此,被調函式對形參的任何操作都影響了主調函式中實參變數。實參位址傳遞到形參,使形參的位址取實參的位址,從而使形參和實參共享同一單元的形式。

指標/引用 傳遞的另外一種用法是:當乙個函式實際需要返回多個值時,而只能顯示返回乙個值時,可以將另外需要返回的變數以指標/引用傳遞給函式,這樣在函式內部修改並且返回後,呼叫者可以拿到被修改過後的變數,也相當於乙個隱式的返回值傳遞吧。

值傳遞,引用傳遞,指標傳遞

最近一直被c 的值傳遞,引用傳遞,指標傳遞這些概念所困擾,一直沒有乙個能說清他們之間的關係通過乙個簡單的例項,或者說淺顯的說法,找了一些相關資料,和自已的個人感受,簡單介紹一下,希望高人指正 c 中傳遞引數的方式有三種 傳引數的值 稱為值傳遞,簡稱傳值 傳引數的位址 稱為位址傳遞,簡稱為傳址 和引用...

值傳遞,引用傳遞,指標傳遞

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作。引...

c 值傳遞 指標傳遞 引用傳遞

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作 引...