一、C词汇中的const
(1) const润色的表达式是黎贞的,其本质却是表达式;
(2) const润色的局部表达式在栈上重新分配内部空间;
(3) const润色的自上而下表达式在黎贞储存区重新分配内部空间;
(4) const只在校对期管用,在运转期罢了;
(5) const润色的表达式并非吗自变量,它而已说校对器该表达式无法再次出现在表达式记号的右边;比如可 以透过操作符修正该表达式的值。
(6) const将具备自上而下开发周期的表达式储存于只读储存区。const无法表述或者说象征意义上的自变量。
(7) c词汇的自变量只管用enum表述的。
下面两图就较好的展现了下面以下几点:图1是标识符,图2是图1的继续执行结论。
图1
图2
二、C++中的const
(1) 当const新闻稿表达式时,将会在示例中放进自变量的值;
(2) 校对操作过程中若辨认出采用自变量时,则间接用示例中的值代替;
(3) 校对操作过程中若辨认出下述情况则会给对应的自变量重新分配储存内部空间;
对const自变量采用了extern;
对const自变量采用&操作符;
(4) C++校对器虽然可能为const自变量重新分配内部空间,但不会采用该内部空间中的值。如下图所示:
图3
从图3中可看出在校对时,会把c的值0存入示例,在后面打印c的值就用符号表中的值代替c。
三、C++中的const与宏
(1) C++中的const自变量类似于宏表述;
比如const int c=5;类似于#define c 5;
(2) const自变量是由校对器处理的,校对器对const自变量进行了类型检查和作用域检查;
(3) 宏表述则由预处理处理,单纯的文本代替。
下图将会解释以上以下几点
图4
图4的标识符若用C词汇校对器将会报错,因为19行中的A和B是表达式并非确定的值,所以报错。如图5所示:
图5
图4的标识符若用C++词汇校对器则运转正常,因为A和B是自变量了,而g()函数中a则用在f()中的宏表述代替。如图6所示;如果g()中的第12行去掉注释则校对就会报错,因为f()中的const int a =4;只在f()中起作用。如图7所示。
图6
图7