【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )
文章目錄
- I . 博客總結 . 指針與引用類型參數
- II . 指針作為參數和返回值
- III . 引用參數簡介
- IV . 引用作為參數和返回值
I . 博客總結 . 指針與引用類型參數
1 . 討論問題 : 本章只針對一點進行討論 , 那就是對兩種類型的參數修改 , 是否影響到外部的變量 ; 傳入什么樣的參數才能修改外部變量 , 即 參數當返回值使用 ;
2 . 如果要在函數中修改 N 維指針指向 :
① 使用指針作為參數 : 必須傳入 N + 1 維 ( 及以上 ) 指針參數 , 才可以修改 N 維指針的指向 ;
② 使用引用作為參數 : 可以傳入 N 維指針的引用作為參數 , 就可以修改 N 維指針的指向 ;
3 . 參數使用語言環境 : 引用類型參數只能在 C++ 環境中使用 , 指針類型參數可以用于 C / C++ 兩種語言環境中 , 因此很多基礎庫 如 FFMPEG , OpenSL ES 等使用的都是指針類型參數 ;
II . 指針作為參數和返回值
指針作為參數和返回值 : 如果是指針作為參數 , 修改 N 維指針指向的地址 , 那么需要傳入 N + 1 維指針 , 傳入指向該 N 維指針 的指針參數 ( N + 1 維指針 ) , 才能在函數中修改該 N 維指針的指向 ;
① 一維指針參數 : 傳入一維指針 , 只能修改指向的內存的內容 ; 修改一維指針本身指向無意義 ;
② 二維指針參數 : 傳入 二維指針 , 只能修改一維指針 及 以下的內容 ; 修改二維指針本身指向無意義 ;
③ N 維指針參數 : 傳入 N 維指針 , 只能修改 N - 1 維指針 及 以下的內容 , 修改 N 維指針內容 無意義 ;
更多內容參考 【Android FFMPEG 開發】FFMPEG 方法中指針類型參數說明 ( 一維指針類型參數 | 二維指針類型參數 )
III . 引用參數簡介
1 . C 語言中的參數 分類 :
① 普通變量參數 : C 語言中 普通變量 ( 非指針變量 ) 作為參數 , 只能進行值傳遞 , 不能通過參數返回結果 ;
② 指針變量參數 : C 語言中 , 如果要讓函數的參數可以將結果返回 , 則必須使用指針作為參數 ;
2 . C++ 中的引用參數 : C++ 在 C 語言基礎上擴展了 引用 數據類型 , 使用引用可以替代上面的指針作為參數的情況 , 使參數具有返回結果的能力 ;
3 . 作用及意義 :
① 具有返回值能力 : 使用引用作參數 , 可以將參數當做返回值使用 ;
② 提高參數傳遞效率 : 大型對象作參數時 , 使用引用類型 , 可以提高參數傳遞效率 ;
更多關于引用的內容參考 【C++ 語言】引用 ( 引用簡介 | 指針常量 | 常量指針 | 常引用 | 引用參數 | 引用 指針 對比 )
IV . 引用作為參數和返回值
引用作為參數和返回值 : 如果是引用作為參數 , 修改 N 維指針指向的地址 , 那么需要傳入 N 維指針的引用即可 ,在函數中修改該引用 , 即可修改外部的被引用的變量 ;
① 一維指針引用參數 : 傳入一維指針引用 , 可以完全修改該指針本身的指向 ;
② 二維指針引用參數 : 傳入 二維指針 , 可以修改二維指針本身 及 以下的內容 ;
③ N 維指針引用參數 : 傳入 N 維指針 , 可以修改 N 維指針本身 及 以下的內容 ;
總結
以上是生活随笔為你收集整理的【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android FFMPEG 开发】F
- 下一篇: 【Android FFMPEG 开发】F