首页 > 其他 > 详细

const基础const符号表机制&&const和#define的对比

时间:2017-01-18 14:21:59      阅读:279      评论:0      收藏:0      [点我收藏+]

1、const基础知识(用法、含义、好处)

 ⑴初级理解:const是定义常量==》意味着只读

#include <iostream>

struct Teacher
{
    char name[64];
    int age;
}

int operatorTeacher01(const Teacher *pT)
{
    pT->age = 10;//这是错误的,原因:指针所指向的内存空间不可以被修改
    return 0;
}

int operatorTeacher02(Teacher * const pT)
{
    pT->age = 10;//这是正确的
    pT = NULL;//这是错误的,原因:指针变量本身不能被修改
    return 0;
}



int main()
{
    const int a;
    int const a;//  第一个第二个意思一样 代表一个整形数
    
    const int *c;//c 是一个指向常整形数的指针(所指向的内存不能被修改,但是本身可以修改)
    
    int  * const d;// d 是常指针(指针变量不能被修改,但是它所指向的内存空间可以被修改)
    
    const int * const e;//一个指向常整形的常指针(指针和它所指向的内存空间均不能被修改)
    
    
    return 0;
}

⑵好处:

   合理的利用const:①指针做函数参数,可以有效的提高代码的可读性,减少bug

              ②清楚的分清参数的输入和输出特性


2.const的符号表机制

  

  C++编译器对const常量的处理:

    当碰见常量声明时,在符号表中放入常量;

   技术分享

    编译过程中若发现使用常量则直接以符号表中的值替换;

   编译过程中若发现对const使用了extern或者&操作符,则给对应的常量分配存储空间(兼容C)


结论:C语言中的const常量:

       C语言中的const变量是只读变量,有自己的存储空间

    C++中的const常量:

       可能分配空间,也可能不分配空间

      分配内存空间的情况:

       当const常量为全局,并且需要在其他文件中使用

       当使用&操作符取const常量的地址

3、const与#define的不同之处

 技术分享



  



本文出自 “11907685” 博客,请务必保留此出处http://11917685.blog.51cto.com/11907685/1892798

const基础const符号表机制&&const和#define的对比

原文:http://11917685.blog.51cto.com/11907685/1892798

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!