主要内容:const变量初始化、数组大小用const变量细节、const变量与#define宏、volatile修饰
一、const变量初始化时必须赋值
二、const变量在C++中可以做数组大小元素、在C中不行,因为它是变量
三、const和#define区别:内存分配
四、volatile修饰一些变量:易被操纵系统、硬件、多线程修改的变量
#include <stdio.h>
int main()
{
/*
测试1
*/
const int b; // 不初始化会报错
// b = 2;
/* 测试2
*C语言中以下定义数组大小会报错,可看出c语言中const修饰的num是变量,不是常量
* 而C++中则编译通过可以用
*/
const int num = 2;
// int a[num] ={3,4};
/*
测试3
*/
#define M 4 // 宏常量
const int N = 5; //此时并未将N放入内存中,保存在符号表中
int i = N; // 此时为N分配内存,以后不再分配
int I = M; // 预编译起见进行宏替换,分配内存 (M没有类型,怎么分配内存)
int j = N; // 没有内存分配
int J = M; // 再次宏替换,有一次分配内存
/*
测试4
在做下面测试时,vc++6.0一般Debug模式没有优化,但可以同时生成Debug和Release版做测试
*/
int test = 10;
int test_1 = test;
int test_2 = test; // 在这里赋值时,编译器不会生成汇编重新从内存读取test值(在两次赋值间test没有作为左值,否则不优化)
volatile int t;
int t_1 = t;
int t_2 = t; // 在这里赋值时,t重新从内存读取
const volatile int temp; // temp只读,可以表示只读寄存器
}
输出:
此例子无输出
版权声明:本文为wujunbo27原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。