• C++ const


    const是一个C++语言的限定符,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。

    1. 修饰常量

    用const修饰的变量是不可变的,(错误演示):

    使用 const 修饰变量 x ,使得变量 x 变成常量,此时再修改 x 的值就会出错,禁止修改。

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    int main(void)
    {
        const int x = 3; // int const x = 3,和前一种是等价的
        x = 5;             // 此时x是一个整型常量,不可修改,编译出错。
        system("pause");
        return 0;
    }

    2. 修饰指针

    如果const位于 * 的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
    如果const位于 * 的右侧,const就是修饰指针本身,即指针本身是常量。
    因此,推荐使用int const* p,而不是使用const int* p(虽然两者意义完全一样),这样更容易理解。

    用 const 修饰指针变量 *p ,这样 *p 就变成常量,此时修改 *p 的值就会出错,但是修改 x 的值不会出错,

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    int main(void)
    {
        int x = 3; 
        int const *p = &x; // const int *p 两者等价
        *p = 5; // 编译报错 
    system("pause"); return 0; }

    因为 const 修改的是指针变量 *p ,而不是地址,所以 p 是可以修改的,但是修改的时候要赋地址,不能赋1,2,3这样的数值。

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    int main(void)
    {
        int x = 3; 
        int y = 5;
        int *q = &y;
        int const *p = &x; // const int *p 两者等价
        // *p = 5; // 编译报错 
        p = &y; // 把y的地址赋给p ,p 指向 y ,*p = 5
    cout
    << "*p = " << *p <<endl; cout << " p = " << p <<endl; system("pause"); return 0; }

    运行结果:

    如果const位于 * 的右侧,const就是修饰指针本身,即指针本身是常量。

    int *const p 此时 const 修饰的是 “指针p” ,p 是一个地址,也就是说这个地址是一个常量,

    *p = 10 这里修改的是 指针变量 *p ,而不是 指针 p ,所以不会报错,修改之后 x 的值也会随之发生变化。

    p = &y 而这里修改的是 指针 p ,也就是说修改了地址,而地址是常量,不能修改,所以会出错。

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    int main(void)
    {
        int x = 3; 
        int y = 5;
        int *const p = &x;
    
        *p = 10; // 编译通过
        p = &y;  // 编译报错
    
        system("pause");
        return 0;
    }

    3. 修饰引用

    &z = x :z 是 x 的别名,const将 别名 z 变成常量,此时给 z 赋值就会出错,但是给 x 重新赋值是可以的

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    int main(void)
    {
        int x = 3; 
        int y = 5;
        int const &z = x;
        z = 10; // 编译错误
    
        system("pause");
        return 0;
    }

    4. 修饰函数参数

    用const修饰函数参数,传递过来的参数在函数内不可以改变。

    用const修饰函数参数的主要作用就是使不想被修改的函数参数变成常量,在函数里不能随便修改函数参数。

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    
    void fun (const int &a,const int &b);
    
    int main(void)
    {
        int x = 3; 
        int y = 5;
        fun(x,y);
        cout << x << "," << y << endl;
    
        system("pause");
        return 0;
    }
    
    void fun (const int &a,const int &b)
    {
        a = 10; // 编译出错
        b = 20; // 编译出错
    }

     

  • 相关阅读:
    爬虫学习(五)——百度贴吧的爬取
    爬虫学习(四)——post请求爬取
    爬虫学习(三)——get请求参数解析
    爬虫学习(二)
    爬虫学习(一)
    第二阶段团队冲刺第三天
    第二阶段团队冲刺第二天
    第二阶段团队冲刺第一天
    第一阶段绩效评估
    Alpha版(内部测试版)发布
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9018924.html
Copyright © 2020-2023  润新知