IBM的一道關(guān)于CONST的筆試題看得我很是暈啊,題目是這樣的:
const char *const * keywords
const char const * keywords
const char *const keywords
const char const keywords
下面總結(jié)一下CONST的用法。const主要是為了程序的健壯型,減少程序出錯(cuò)??荚?大提示const指針和引用一般用在函數(shù)的參數(shù)中。最基本的用法如下:
// a的內(nèi)容不變,a只能是100也就是聲明一個(gè)int類(lèi)型的常量(#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是一個(gè)指向常量的常指針,一般用來(lái)傳遞多維數(shù)組,使用方法如下:
char* init[] = {"Paris","in the","Spring"};
void fun(const int* const a){}
fun(init)//保護(hù)參數(shù)不被修改
CONST的主要功能就是保護(hù)函數(shù)的參數(shù),使其在調(diào)用時(shí)不被修改:
int A(int)const; //是常函數(shù),只能用在類(lèi)中,調(diào)用它的對(duì)象不能改改變成員值
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());
因此上面的問(wèn)題迎刃而解了。const放在*左側(cè)修飾的是指針的內(nèi)容,const放在*右側(cè)修飾的是指針本身。
const char *const * keywords ----keywords 是一個(gè)普通的指針,它指向一個(gè)指向常量的常量指針
const char const * keywords ----與const char *keywords 或char const *keywords 等同,keywords是指向常量的普通指針
const char *const keywords ----keywords是指向常量的常量指針,無(wú)論是它的值還是它指向的地址空間的值都不能更改
const char const keywords ----與const char keywords 或 char const keywords等同, 定義了一個(gè)字符常量keywords 。
const char *const * keywords
const char const * keywords
const char *const keywords
const char const keywords
下面總結(jié)一下CONST的用法。const主要是為了程序的健壯型,減少程序出錯(cuò)??荚?大提示const指針和引用一般用在函數(shù)的參數(shù)中。最基本的用法如下:
// a的內(nèi)容不變,a只能是100也就是聲明一個(gè)int類(lèi)型的常量(#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是一個(gè)指向常量的常指針,一般用來(lái)傳遞多維數(shù)組,使用方法如下:
char* init[] = {"Paris","in the","Spring"};
void fun(const int* const a){}
fun(init)//保護(hù)參數(shù)不被修改
CONST的主要功能就是保護(hù)函數(shù)的參數(shù),使其在調(diào)用時(shí)不被修改:
int A(int)const; //是常函數(shù),只能用在類(lèi)中,調(diào)用它的對(duì)象不能改改變成員值
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());
因此上面的問(wèn)題迎刃而解了。const放在*左側(cè)修飾的是指針的內(nèi)容,const放在*右側(cè)修飾的是指針本身。
const char *const * keywords ----keywords 是一個(gè)普通的指針,它指向一個(gè)指向常量的常量指針
const char const * keywords ----與const char *keywords 或char const *keywords 等同,keywords是指向常量的普通指針
const char *const keywords ----keywords是指向常量的常量指針,無(wú)論是它的值還是它指向的地址空間的值都不能更改
const char const keywords ----與const char keywords 或 char const keywords等同, 定義了一個(gè)字符常量keywords 。