您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言 什么是const指针

时间:12-30来源:作者:点击数:

如果希望一个变量在被初始化后其值不会被修改,程序员就会通过cons,修饰符和编译程序达成默契。编译程序会努力去保证这种默契——它将禁止程序中出现对说明为const的变量进行修改的代码。

const指针的准确提法应该是指向const数据的指针,即它所指向的数据不能被修改。只要在指针说明的开头加入const修饰符,就可说明一个cosnt指针。尽管const指针所指向的数据不能被修改,但cosnt指针本身是可以修改的。

下面给出了const指针的一些合法和非法的用法例子:
    const char *str="hello";
    char c=*str;  /*legal*/
    str++;       /*legal*/
    *str='a';     /* illegal */
    str[1]='b';  /*illegal*/

前两条语句是合法的,因为它们没有修改str所指向的数据;后两条语句是非法的,因为它们要修改str所指向的数据。

在说明函数参数时,常常要使用const指针。例如,一个计算字符串长度的函数不必改变字符串内容,它可以写成这样:

    my_strlen(const char *str)
    {
        int count=0;
        while ( * str++)
        {
            count ++;
        }
        return   count;
    }

注意,如果有必要,一个非const指针可以被隐式地转换为const指针,但一个const指针不能被转换成非const指针。这就是说,在调用my_strlen()时,它的参数既可以是一个const指针,也可以是一个非const指针。

请参见:

1、一个变量可以同时被说明为const和volatile吗?

2、什么时候应该使用const修饰符?

3、什么时候不应该使用类型强制转换(type cast)?

4、用const说明常量有什么好处?

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门