二級考試C++基礎:C++中CONST的用法

字號:

IBM的一道關于CONST的筆試題看得我很是暈啊,題目是這樣的:
    const char *const * keywords
    const char const * keywords
    const char *const keywords
    const char const keywords
    下面總結一下CONST的用法。const主要是為了程序的健壯型,減少程序出錯??荚?大提示const指針和引用一般用在函數(shù)的參數(shù)中。最基本的用法如下:
    // a的內(nèi)容不變,a只能是100也就是聲明一個int類型的常量(#define b =100)
    const int a=100;
    int const b=100; //和上面作用一樣
    //下面兩句話一樣
    const int b=100;
    int const b=100;
    const放在*左側(cè)修飾的是指針的內(nèi)容,const放在*右側(cè)修飾的是指針本身。如下:
    const int* pa = &a; //指針指向的內(nèi)容為常量(就是a的值不變)
    int const *a = &b; //指針指向的內(nèi)容為常量(就是b的值不變)*p=3//error
    int* const a = &b; //指針為常量,不能更改指針了如 a++但可以改值*a=3;
    const int* const a = &b,其中a是一個指向常量的常指針,一般用來傳遞多維數(shù)組,使用方法如下:
    char* init[] = {"Paris","in the","Spring"};
    void fun(const int* const a){}
    fun(init)//保護參數(shù)不被修改
    CONST的主要功能就是保護函數(shù)的參數(shù),使其在調(diào)用時不被修改:
    int A(int)const; //是常函數(shù),只能用在類中,調(diào)用它的對象不能改改變成員值
    const int A(); //返回的是常量,所以必須這么調(diào)用 cosnt int a=A();
    int A(const int); //參數(shù)不能改值,可用在任意函數(shù)
    int height() const;//常函數(shù)只能由常函數(shù)調(diào)用
    int max(int,int) const;
    int Max = max(height(),height());
    因此上面的問題迎刃而解了。const放在*左側(cè)修飾的是指針的內(nèi)容,const放在*右側(cè)修飾的是指針本身。
    const char *const * keywords ----keywords 是一個普通的指針,它指向一個指向常量的常量指針
    const char const * keywords ----與const char *keywords 或char const *keywords 等同,keywords是指向常量的普通指針
    const char *const keywords ----keywords是指向常量的常量指針,無論是它的值還是它指向的地址空間的值都不能更改
    const char const keywords ----與const char keywords 或 char const keywords等同, 定義了一個字符常量keywords 。