0
点赞
收藏
分享

微信扫一扫

const 关键字

const 关键字

const修饰符是让一个变量只读,即不可修改,而且必须在创建的时候就进行初始化。但是实际在C语言中,用const修饰的变量也可以通过指针的方式修改。并且常量类型只能使用常量指针来获取地址。

const 变量

const int x = 10;
// x不能被赋予新的值
// x = 20; // 这会导致编译错误

const 指针

int value = 10;
const int* ptr = &value; // 指向常量的指针
// *ptr = 20; // 这会导致编译错误,因为ptr指向的是const数据

int const* ptr2 = &value; // 另一种语法,与上面的含义相同

在这个例子中,ptr是指向常量整数的指针,不能通过ptr修改其指向的数据。

如果我们声明指针本身为常量,那么就不能改变指针指向的地址:

int value1 = 10;
int value2 = 20;
int* const ptr3 = &value1; // 指向int的常量指针
// ptr3 = &value2; // 这会导致编译错误,因为ptr3本身是const的

*ptr3 = 30; // 这是合法的,因为ptr3指向的数据不是const

const 函数参数和返回类型

void printValue(const int value) {
    // value在函数内不能被修改
    std::cout << value << std::endl;
}

const 成员函数

class MyClass {
public:
    int getValue() const {
        // 这个成员函数不能修改任何成员变量
        return m_value;
    }

private:
    int m_value;
};

const 与宏的区别

编译时刻:宏是预编译阶段编译;const是编译阶段编译

编译检查:宏不做检查,不会报错误,只是替换,const会编译检查,会报编译错误

举报

相关推荐

0 条评论