const 修饰符的几种用法

时间:2022-12-20 21:07:16
const 修饰符的几种用法:

这玩意地球人都知道,不管什么东东被他修饰后就表示为常量,意思是不可修改.
也可以理解为只读

//
最普通的用法,这个nTemp就是常量,下面的代码中不能再修改nTemp的值
//
否则编译器就会报错的
//
必须初始化
const int nTemp = 10;

//
这样就错了
const int nTemp;

//
但声明为外部的一个常量就可以
extern const int nTemp;
//
这样到反而错了
extern const int nTemp = 10;


以上都已经容易理解


const遇上指针时就非常容易搞晕

先统一一下下面说法:
szBuffer  //
下面会被说明为指针自己的值
*szBuffer //
下面会被说明为指针指向的值

const char *szBuffer;       //
指针指向的值不可修改
char const *szBuffer;       //
指针指向的值不可修改 其实与上面那句是一样的
char *const szBuffer;       //
指针自己的值不可修改
const char *const szBuffer; //
指针自己的值与指向的值都不可修改

/*
是不是晕了,哈哈,哥玩的不是const,哥玩的是寂寞 ^_ */

经过仔细观察后发现:
    const 
只修饰他右边的东东, 如果他右边出现*szBuffer,那就是指针指向的值被修饰了
   
const 只修饰他右边的东东, 如果他右边出现szBuffer,那就是指针自己的值被修饰了


//const 
还可以修饰函数返回值与上面的几种情况一样,就不多说了
const char *GetDate();

//
这种用法更有意思
//
左边的const修饰了函数的返回值
//
右边的const修饰的是类里边的成员数据不可修改
const char *CObj::GetDate() const
{

}

好了,就写到了,本人学识不够,难免有出错地方,欢迎指正