C语言 基础知识之const(const是什么,const的作用,const的使用)

一、const是什么

    const是C/C++中的类型修饰符。

二、const的作用

    1、对变量声明只读特性,保护变量值以防被修改。

    2、节省空间,避免不必要的内存分配。const修饰的变量在程序运行过程中只有一份拷贝。

    3、提高程序运行效率。编译器不为普通const常量分配存储空间,而是将他们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储和读取内存的操作。

三、const的使用

    1、const和普通变量

       (1)编译器在编译过程中把用到const变量的地方都替换成对应的值。为了执行这个操作,编译器必须知道const变量的初始值, 如果程序包含多个文件,则每个用了该const变量的文件,都必须能访问到它的初始值才行,要做到这一点,就必须在每一个用到该const变量的文件中都有对它的定义或声明。   

                默认状态下,const变量仅在文件内有效,当多个文件中出现了同名的const变量时,等同于在不同文件中分别定义了独立的const变量

                定义一个const变量

        const type value_name = value;

       (2)对于有必要在文件间共享的const变量,在const变量定义和声明时添加extern关键字即可。

                例如:

                在test_extern_const.cpp中定义并初始化一个可被外部访问的const变量

        extern const int test_extern_const = 0;

                在test_extern_const.h中声明变量extern_const_test和函数print_test_extern_const_value

        #ifndef _TEST_EXTERN_CONST_H
        #define _TEST_EXTERN_CONST_H

        extern const int test_extern_const;

        #endif

                  在main.cpp中使用变量test_extern_const

        #include <iostream>
        #include "test_extern_const.h"
        using namespace std;

        int main() {
            cout<<"test_extern_const value is "<<test_extern_const<<endl;
            return 0;
        }

            从main的运行结果可以看到,const变量test_extern_const被外部文件成功访问

                     

    2、const和引用

               把引用绑定到const变量上,称为对常量的引用。与普通引用不同的是,对常量的引用不能修改它绑定的变量的值。

               常量引用仅对引用可参与的操作做出了限定,对于引用的变量本身是不是一个常量未做限定。

        const int test_const = 0;
        const int &reference_to_const = test_const;

    3、const和指针

        (1)指向常量的指针

                 指向常量的指针没有规定其所指向的变量必须是一个常量。指向常量的指针仅仅要求不能通过该指针改变变量的值。

        const double value_name_1 = value;
        const double *pointer_to_const_1 = &value_name_1;

        double value_name_2 = value;
        const double *pointer_to_const_2 = &value_name_2; 

        (2)常量指针

                 指针本身为常量,常量指针必须初始化,一旦初始化完成,它的值就不能再改变了。即不变的是指针本身的值而非指向的那个值。

        int value_name = value;
        int *const const_pointer = &value_name;

  • 41
    点赞
  • 270
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值