//const分配内存的时机:编译器编译期间;
#include<iostream>
using namespace std;
int main01()
{
int a;
const int b=10;
int c;
printf("%d %d %d",&a,&c,&b);
return 0;
}
//const和#define的相同之处 在下列代码可以显示
//const 和#define的不同之处:
/*对比加深:
C++中的const常量类似于宏定义
const int c=5约等于#define c 5
C++中的const常量与宏定义不同
const常量是由编译器处理的,提供类型检查和作用域检查
宏定义由预处理器处理,单纯的文本替换;*/
int main02()
{
//int a=10;
//int b=20;
//int arry[a+b];//C和C++编译器会报错,原因是变量不能当做数组下标
//但是这种语法在linux内核里面是成立的,因为gcc支持这种现象
//const int a=10;
//const int b=20;
//int arry[a+b];//用了const后,编译就可以通过,const于#define有相同之处
return 0;
}
/*思考:在下列代码中,在func1定义a,在func2中能使用吗?
在下列代码中,在func1定义的b,在func2中能实现吗?*/
void func1()
{
#define a 10
//const int b=20;;
}
void func2()
{
printf("a=%d\n",a);
//printf("b=%d\n",b);
}
int main()
{
func1();
func2();
return 0;
}
//# undef卸载宏定义,让宏定义的变量只能在自己的函数内使用
//如果只编写# undef a,那么只会卸载a这个变量,其他变量在其他函数内还是可以被使用的
//const和#define区别:
/*# define定义的变量可以在其他函数内继续使用,而const定义的变量只能在所定义的函数的内部使用
不能再其他函数内使用const所定义的变量 */
C++初学者总结的知识点,如果有什么有问题的地方还请在下方评论出指出,谢谢观看