zoukankan      html  css  js  c++  java
  • const

    关键字const:
    a.const是用来定义只读变量的,切忌它定义的是变量,不是常量,真的常量是#define的和enum。
    b.在陈正冲老师的这本书中的第35页,有说编译器不为普通const只读变量分配内存空间,而是将它们保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率也很高,节省空间。具体的没怎么看懂,本次学习也不打算看懂了(因为它说const修饰的全局只读变量是在静态区的,我太认同)~~~嘿嘿
    c.其实const就是修饰变量,然后这个变量就不能当作左值了,当作左值,编译器就报错!!!
    d. 其实const中最不好区分的知识点是,如图:
     
    (可结合上文指针篇了解指针用法)
    个人理解:
    const在*前:p(地址)可变,指向的内容(*p)不可变
    const在*后:p(地址)不可变,指向的内容(*p)可变
     
    计数任意数组中成员数:
    sizeof((const char *)data)+1;
    其实对于这四个情况的记忆很简单,就是看const跟谁近,是const *p   ,还是  * const  p,还是const  *  const  p,这样就很容易看出来const是修饰谁的了吧。
    e.但是const修饰的变量可以通过,指针将其改变。
    f.const修饰函数参数表示在函数体内不希望改变参数的值,比如说在strcmp等函数中,用的都是const  char*
    g.const修饰函数返回值表示返回值不可以改变,多用于返回指针的情况:

    cosnt int* func()  

    •  
    •       static int  count  =  0;  
    •       count++;  
    •       return &count;  

    h.在看const修饰谁,谁不变的问题上,可以把类型去掉再看,代码如下:

    struct student  

    •  
    •           
    • }*str;  
    • const str stu3;  
    • str const stu4; 

    str是一个类型 ,所以在去掉类型的时候,应该都变成const stu3和const stu4了,所以说应该是stu4和stu3这个指针不能被赋值。

     
     
     
     
     
     
     
     
  • 相关阅读:
    string类
    拓扑排序 图
    麦森数,高精度快速幂
    排列
    牛客练习赛28 B 数据结构
    牛客练习赛27 C-水图
    组合数
    树状数组
    k短路模板+例题
    Supreme Number(找规律,打表)
  • 原文地址:https://www.cnblogs.com/Ph-one/p/3992052.html
Copyright © 2011-2022 走看看