c函數中形參為引用的情況;C++中*a和*&a的區別


引用經常被用作函數參數,使得函數中的變量名成為調用程序中的變量別名。這種傳遞參數 的方法稱為按引用傳遞。按引用傳遞允許被調用的函數能夠訪問調用函數中的變量。
void foo(int* ptr); //傳值調用 int a; int* pValue = &a; foo(pValue); 其中,pValue的值不能被函數foo改變的,即pValue指向a 但是如果是 void foo(int*& ptr); //傳遞引用 void foo(int*& ptr) { ptr = NULL; } 調用過后,pValue就變成了NULL。而第一種情況pValue不能被改變。 引用是C++重要特性之一,在大多數情況下避免了使用指針。在C++中,引用不可捏造,比如C你可以很容易弄一個NULL的指針,而引用不存在NULL引用。 上述foo函數要用C來實現,則要用指針的指針: void foo(int** pptr) { *ptr = NULL; } 調用時要foo(&pValue) 這種技術很多用在比如定義一個安全刪除指針的函數,所謂安全就是,只有當指針為零的時候才
執行刪除,刪除之后,立刻把指針賦值為NULL。
template<typename T>
inline safe_delete(T*& ptr)
{
    if (ptr)
    {
        delete ptr;
        ptr = NULL;
    }
}

在C++中,應盡量避免使用指針


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM