C++ 指針常量、常量指針和常指針常量

    int a = 2;
    int b = 3;
    int *const p1 = &a;//指針常量:被定義的指針變量就變成了一個(gè)指針類型的常變量,指針不可以變,指針指向的內(nèi)容可以變,需要在定義的時(shí)候給定初值
    int const *p2 = &b;//常量指針:指向常量的指針變量,指針可以變,指針指向的內(nèi)容不可以變,等價(jià)于const int *p2 = &b;
    int const *const p3 = &a;//常指針常量: 指針不能改變,指針指向的值也不能改變,等價(jià)于const int *const p3 = &a;
    
    // Error: Cannot assign to variable 'p3' with const-qualified type 'const int *const'
    // p3 = &a;
    
    // Error: Read-only variable is not assignable
    //*p3 = a;
    
    NSLog(@"%d,%d,%d,%d", a, b, *p1, *p2);
    NSLog(@"%p,%p,%p,%p", &a, &b, p1, p2);
    NSLog(@"p3: %d, %p", *p3, p3);
    
    // Error: Cannot assign to variable 'p1' with const-qualified type 'int *const'
    // p1 = &b;
    *p1 = b;
    
    // Error: Read-only variable is not assignable
    // *p2 = a;
    p2 = &a;
    
    NSLog(@"%d,%d,%d,%d", a, b, *p1, *p2);
    NSLog(@"%p,%p,%p,%p", &a, &b, p1, p2);
    NSLog(@"p3: %d, %p", *p3, p3);
    
    /*
     Log:
     2018-07-20 10:55:13.483435+0800 Test[23866:178166] 2,3,2,3
     2018-07-20 10:55:13.483684+0800 Test[23866:178166] 0x7ffeee4ada9c,0x7ffeee4ada98,0x7ffeee4ada9c,0x7ffeee4ada98
     2018-07-20 10:55:13.483834+0800 Test[23866:178166] p3: 2, 0x7ffeee4ada9c
     2018-07-20 10:55:13.484039+0800 Test[23866:178166] 3,3,3,3
     2018-07-20 10:55:13.484224+0800 Test[23866:178166] 0x7ffeee4ada9c,0x7ffeee4ada98,0x7ffeee4ada9c,0x7ffeee4ada9c
     2018-07-20 10:55:13.484377+0800 Test[23866:178166] p3: 3, 0x7ffeee4ada9c
     */

參考:
C++ 指針常量、常量指針和常指針常量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容