關於指針和引用的思考

1.指針和引用


#pragma mark- 1.about Point Quote
void createPointAndQuote()
{
    //指針就像電話號碼——指向 人 (正確的錯誤的)  有時也會空號
    char char_tmp='a';
    char *char_point=&char_tmp;

    printf("指針是一個地址:\n%x\n",char_point);

    //引用quote就像一個外號,是人衆多稱呼中的一個
    char &quote_char=char_tmp;
    printf("引用就像一個外號:\n%c\n",quote_char);
}

這裏寫圖片描述

有個人外號叫“刀巴”,——其實他的外號是色,刀疤是這個人的引用

你可以撥打138938找到一個人,這個電話就是指向那個人的指針

這裏寫圖片描述

2.指針VS引用


#pragma mark- difference between them
void difference()
{
    //point——電話
    //電話——換號——指針指向不同
    //電話——空號——空指針
    //打錯了——野指針
    //大小四個字節(32位)  8(64位)
    string str="123456";
    string &ref=str;
    string *point=&str;

    cout<<"ref:"<<ref<<"\tpoint:"<<*point<<endl;
    cout<<"sizeof(ref):"<<sizeof(ref)<<"\tsizeof(pointer)"<<sizeof(point)<<endl;



    //quote——外號
    //不能改——你見過外號天天改的麼?
    //必須初始化——外號不能憑空事先取好
}

這裏寫圖片描述

這裏寫圖片描述

3.誰是常量


#pragma mark- const  誰是常量

void whoIsConst()
{
    int a=10;
    int b=12;

    //常量指針——指針指向的常量——對方——固定電話:電話(point)不能到處跑
    const int* pointer=&a;
    pointer=&b;
    //*pointer=20;

    printf("\n常量指針——就是固定電話%d\n",*pointer);

    //指針常量——你用的公用電話——你跑不了
    int *const pointer2=&a;
//    pointer2=&b;

    printf("\n指針常量——就是公用電話%d\n",*pointer2);

}

這裏寫圖片描述

這裏寫圖片描述

4.傳參


#pragma mark- 指針傳參和引用傳參

void swapint(int *a,int *b)
{
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}

void swapint2(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

void swapint3(int a,int b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}
    int a=10;
    int b=20;

    //指針傳參
    swapint(&a,&b);
    cout<<"指針傳參"<<endl;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;


    //引用傳參
    swapint2(a,b);
    cout<<"引用傳參"<<endl;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;


    //值傳遞
    swapint3(a,b);
    cout<<"值傳參"<<endl;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;

這裏寫圖片描述

三種傳遞描述起來倒是不難,看過火影的人都知道鳴人的絕招“影分身之術”,分身戰死了,還可以再生,本尊死了,就真死了。

指針傳遞+參數傳遞——本尊

值傳遞——分身

這裏寫圖片描述

相關代碼:https://github.com/b9zhengaoxing/DataStructure_Point_Quote

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章