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

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

#include<iostream>structTeacher{charname[64];intage;}intoperatorTeacher01(constTeacher*pT){pT->age=10;//这是错误的,原因:指针所指向的内存空间不可以被修改return0;}intoperatorTeacher02(Teacher*constpT){pT->age=10;//这是正确的pT=NULL;//这是错误的,原因:指针变量本身不能被修改return0;}intmain(){constinta;intconsta;//第一个第二个意思一样代表一个×××数constint*c;//c是一个指向常×××数的指针(所指向的内存不能被修改,但是本身可以修改)int*constd;//d是常指针(指针变量不能被修改,但是它所指向的内存空间可以被修改)constint*conste;//一个指向常×××的常指针(指针和它所指向的内存空间均不能被修改)return0;}

⑵好处:

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

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


2.const的符号表机制

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

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

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

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


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

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

C++中的const常量:

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

分配内存空间的情况:

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

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

3、const与#define的不同之处