打印
[开发工具]

const 的妙用之处

[复制链接]
293|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sesefadou|  楼主 | 2025-2-24 05:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, ar, tc, stc, TI
const int MaxNum = 100;  //班级的最大人数
这样 MaxNum 的值就不能被修改了,任何对 MaxNum 赋值的行为都将引发错误:


我们经常将 const 变量称为常量(Constant)。创建常量的格式通常为:


type const name = value;
但我们通常采用第一种方式,不采用第二种方式。另外建议将常量名的首字母大写,以提醒程序员这是个常量。
由于常量一旦被创建后其值就不能再改变,所以常量必须在定义的同时赋值(初始化),后面的任何赋值行为都将引发错误。一如既往,初始化常量可以使用任意形式的表达式,如下所示:

const int *p1;int const *p2;int * const p3;
在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。
当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:

size_t strlen ( const char * str );int strcmp ( const char * str1, const char * str2 );char * strcat ( char * destination, const char * source );char * strcpy ( char * destination, const char * source );int system (const char* command);int puts ( const char * str );int printf ( const char * format, ... );我们自己在定义函数时也可以使用 const 对形参加以限制,例如查找字符串中某个字符出现的次数:

#include
void func(char *str){ }
int main(){    const char *str1 = "c.biancheng.net";    char *str2 = str1;    func(str1);    return 0;}第7、8行代码分别通过赋值、传参(传参的本质也是赋值)将 const 类型的数据交给了非 const 类型的变量,编译器不会容忍这种行为,会给出警告,甚至直接报错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

1690

帖子

0

粉丝