C++中的const和define
1 const基础知识(用法、含义、好处)
初级理解:const是定义常量==》const意味着只读
const int a; int const b; const int *c; int * const d; const int * const e ; |
含义: //第一个第二个意思一样 代表一个常整形数 //第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) //第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) //第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) |
const好处 //合理的利用const, //1.指针做函数参数,可以有效的提高代码可读性,减少bug; //2.清楚的分清参数的输入和输出特性 |
int setTeacher_err( const Teacher *p) Const修改形参的时候,在利用形参不能修改指针所向的内存空间,即指针所指内存空间中的数据不能被修改 保证了内存空间中数据的安全性,避免多个指向该内存空间的指针对该内存空间中的数据不断的被修改导致程序错误,保证了数据的互斥性。 |
2 C++中const运行机制
int main() { const int a = 10; int *p = (int*)&a; printf("a===>%d\n", a); *p = 11; printf("a===>%d\n", a); return 0; } |
C++编译器对const常量的处理:
|
|
注意:
|
结论:
|
3 #define基础知识
void fun1() { #define a 10 const int b = 20; //#undef a # undef //若不让define具有全局性,则在后加上undef注销所有定义的常量,undef a 仅仅注销a常量。 }
void fun2() { printf("a = %d\n", a); printf("b = %d\n", b); }
int main() { fun1(); fun2(); return 0; } |
#define的含义与const相同,都是定义常量,只是define定义的为全局型常量,const定义的常量有作用域 |
4 const和#define区别
对比:
|
|
|