本文共 2035 字,大约阅读时间需要 6 分钟。
语法格式: const 类型名 常量名=常量值(表达式); 作 用: 定义时初始化,之后不可修改,不可以函数返回值进行初始化.const修饰符可以保证程序的健壮性.const可译作"只读".合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现. 使用方法: const修饰符常和指针联合使用.const 是一个左结合的类型修饰符,它与其左侧的类型修饰符合为一个类型.切记,当const放在指针符*左侧,则表示修饰的是指针内容.当const放在指针符*右侧,则表示修饰的是指针本身.注意,若某变量使用const修饰后,编译器会查找该变量在应用程序中是否发生变化,若变化,则编译器会报错. 1、指向常量的指针变量 如: char name[] = "lishuai"; const char *p_name = name; 或 char const *p_name = name; 修饰符const放在指针符*的左侧,表示指针内容不可变,即用户不能改变字符串"lishuai"或"yanzi"的内容. p_name[2] = 'a'; //错误(原因:改变了指针所指向的内容),无法通过编译 p_name = "beijing" //正确(原因:改变了指针的值),最后输出:"beijing" 2、常量指针 如: char name[] = "lishuai"; char * const p_name = name; 修饰符const放在指针符*的右侧,表示指针本身不可变,即用户不能改变指针p_name的值. p_name[2] = 'h'; //正确(原因:改变了指针所指向的内容),最后输出:"lihhuai" p_name = "yanzi"; //错误(原因:改变了指针的值),无法通过编译 在该例程中,本来变量p_name是可变的,但由于const的修饰,而变为定值. 3、指向常量的常量指针 如: char name[] = "lishuai"; const char * const p_name = name; 在指针符*的左右两侧均有修饰符const,表示指针本身和指针所指向的内容均不可变. p_name[2] = 'a'; //错误(原因:改变了指针所指向的内容),无法通过编译 p_name = "beijing" //错误(原因:改变了指针的值),无法通过编译
【attention】
const int a; a是一个常整型数 int const a; a是一个常整型数 const int *a; a是一个指向常整型数的指针 int * const a; a是一个指向整型数的常指针 int const * a const; a是一个指向常整型数的常指针 前两个的作用是一样,a是一个常整型数. 第三个意味着a是一个指向常整型数的指针(整型数是不可修改的,但指针可以). 第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的). 最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的).
4、const限定函数的参数转载地址:http://xawni.baihongyu.com/