指針的引用

 C語言中的二級指針 程序員

struct Teacher
{
    char name[64];
    int age;
};
//在被調用函數 獲取資源
int getTeacher(Teacher **p)
{
    Teacher *tmp = NULL;
    if(p == NULL)
    {
        return -1;
    }
    tmp=(Teacher *)malloc(sizeof(Teacher));
    if(tmp == NULL)
    {
        return -2;
    }
    tmp->age = 33;
    // p是實參的地址 *實參的地址 
    *p = tmp;
    return 0;
}

 

 

C++中指針的引用 函數

int getTeacher2(Teacher*  &myp)
{
    //給myp賦值  至關於給main函數中的pT1賦值
    myp = (Teacher *)malloc(sizeof(Teacher));
    if(myp == NULL)
    {
        return -1;
    }
    myp->age = 34;

    return 0;
}

void FreeTeacher(Teacher *pT1)
{
    if(pT1 == NULL)
    {
        return ;
    }
    free(pT1);    
}

int main(void)
{
    Teacher *pT1 = NULL;
    
    //1 C語言中的二級指針
    getTeacher(&pT1);    
    cout << "age:"<<pT1->age<<endl;
    FreeTeacher(pT1);
    
    //2 C++中的引用  (指針的引用)
    //引用的本質 間接賦值後2個條件 讓C++編譯器幫咱們程序員作了
    getTeacher2(pT1);
    cout << "age:"<<pT1->age<<endl;
    FreeTeacher(pT1);
    
    cout <<"hello..."<<endl;
    return 0;
}

運行結果:spa

相關文章
相關標籤/搜索