#define来自C,const产生于C++。区别在于使用const修饰符定义常量是类型化的,它有地址,可以用指针指向,但不能修改它的值。
//
指向常量的指针
const char * name = " chen " ;
name[ 3 ] = ' a ' ; // wrong
name = " zhang " ; // right
const char * name = " chen " ;
name[ 3 ] = ' a ' ; // wrong
name = " zhang " ; // right
//
常指针
char * const name = " chen " ;
name[ 3 ] = ' a ' ; // right
name = " zhang " ; // wrong
char * const name = " chen " ;
name[ 3 ] = ' a ' ; // right
name = " zhang " ; // wrong
//
指向常量的常指针
const char * const name = " chen " ;
name[ 3 ] = ' a ' ; // wrong
name = " zhang " ; // wrong
const char * const name = " chen " ;
name[ 3 ] = ' a ' ; // wrong
name = " zhang " ; // wrong
说明:
1.如果没有给常量初值,C++假定初始值为零。
2.用const定义常量,C++编译器可以进行严格的类型检查。
3.#define是在预处理时起作用,相当于"查找并替换"。