码迷,mamicode.com
首页 > 编程语言 > 详细

const基础知识、const在C++和C中的异同、const与#define宏定义的异同

时间:2016-08-11 00:32:06      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

1.const基础知识

(1)用const定义常量

   const int a = 5;    //定义了一个int型常量a,其值为5

(注:在C++中将其存储在符号表中(key,value),并不分配内存空间,只有在取地址或者定义为全局变量在其他文件中使用时才分配内存空间)

(2)const与指针

1   const int* p1 = &a;     //p1是指向常量a的指针,a的值不能通过指针p1改变
2 
3   int* const p2 =&b;    //p2是只能指向b的指针,b的值可以通过p2改变
4   const int* const p3 =&c;   //p3是只能指向c的常量指针,且c的值不能通过指针p3改变!

(3)const与引用

周末补...

2.const在C++和C中的异同

在C中是“伪君子”、“冒牌货”...

1 void main()
2 {
3   const int a = 5;
4   int *p  =  &a;
5   *p  =  10;
6   printf("a = %d",a); 
7 }

在上面的代码中我们用const定义的常量a,在C语言中 可以通过指向 a 的指针 p 来修改 a 的内容,这是不可思议的,所以我们说C中的const是“伪君子”、“冒牌货”,并没有起到他应该发挥的作用。但是

在C++中名副其实。

原因在上面我们也提到过,就是在C++中将定义的常量存储在符号表中(key,value),并不分配内存空间,只有在取地址或者定义为全局变量在其他文件中使用时才分配内存空间,我们使用常量常量名访问常量时只使用符号表中的常量,内存空间中常量值的改变并不会影响符号表中存储的值。

技术分享

 

3.constyu#define宏定义的异同

周末补充...

const基础知识、const在C++和C中的异同、const与#define宏定义的异同

标签:

原文地址:http://www.cnblogs.com/BloodRose/p/BloodRose_20160810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!