1. 程式人生 > >筆記三:const 在變數、函式、指標中的使用

筆記三:const 在變數、函式、指標中的使用

const限定符在變數、函式、指標中的使用

個人理解: 不管是在變數、函式、指標等中加入const限定符,一般都按照優先順序高低+從右向左結合的方式去理解(ps:如理解有誤,望指教~)

  • case 1const int butfsize = 512;
    理解:
    a):沒有優先順序,則變數名bufsize首先與int結合,表明是一個int型變數;
    b):宣告為int型的bufsize變數再與const結合,則表明它是一個常量;
    c):兩者結合起來,bufsize是一個int型常量,初始化為512;

  • case 2const double *cptr;
    理解:
    a):cptr與*結合,表明它是一個指標;
    b):*cptr與double結合,表明它是一個double型指標;
    c):若沒有const限定符,表明cptr指向double型變數,增加const限定符,則cptr指向範圍縮小,限定在double型的const變數範圍
    d):上述3點表示cptr指標的指向物件是const型,但其本身非const指標;

  • case 3int *const currErr = &errNum;
    理解:
    a)存在*,最終是要與變數名結合在一起,故此時在理解上可將等式類比成int const *currErr = &errNum; (參考 int* p 等價 int *p, 若理解有誤,請指正)
    b):仍然按照從右向左的結合方式,*currErr是一個指標;
    c):const 與*currErr 結合,表明它是一個const型指標;
    d):int限定指標的指向範圍,表明const型指標指向一個int型的變數;
    f):const型指標通俗來講,表明“我看上你了errNum,就絕不會移情別戀再看上其他的變數“;

  • case 4bool (*pf)(const string&)
    理解:
    a):按照優先順序順序,先考慮()內的;
    b):對const string& 而言,形參首先是一個引用,然後是一個string型別的引用,最後將引用限定一個範圍,屬於const引用,表示在函式中只能讀而不能對引用變數進行寫操作;
    c):(*pf)表明pf先是一個指標;
    d): 故pf是一個指向函式的指標,且該函式是帶有常string引用和bool返回值。

  • case 5double avg_price() const;
    理解:
    a):根據規則,將const加在成員函式的形參之後,成員函式宣告為常量,不能改變其操作物件的成員變數的值

  • case 6const int fun();
    理解:
    a):也適用於從右向左結合方式,首先是一個函式,其次返回int型變數,然後const對返回值進行範圍縮小的限定,只能是const型即常量。

  • 注:遇到其他形式再補充~