const意味着“只读”

ubunto下的实验

1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

#include <stdio.h>

void main(void)

{

int const a = 10;

int *p = (int*)&a;

*p = 20;

printf("&a=%d\n", &a);

printf(" p=%d\n", p);

printf(" a=%d\n", a);

printf("*p=%d\n", *p);

}

//&a=-1081948900

//p=-1081948900

//a=20

//*p=20

1) 修饰一般常量 一般常量是指简单类型的常量

const int a;

int const a;

2)修饰常指针                                                                                            const int *A  ,  int const *A; //const修饰指向的对象,A可变,A指向的对象不可变

int *const A;                  //const修饰指针A, A不可变,A指向的对象可变

const int *const A;            //指针A和A指向的对象都不可变

3) 修饰函数的常参数 const修饰符也可以修饰函数的传递参数,格式如下:void Fun(const int Var); 告诉编译器Var在函数体中的无法改变,从而防止了使用者的一些无意的或错误的修改。

#include <stdio.h>

int const a = 10;

void main(void)

{

int *p = (int*)&a;

*p = 20;

printf("%d\n", *p);

}

//段错误

#include <stdio.h>

void main(void)

{

int const a = 10;

int b = 20;

int *p = (int*)&a;

*p = 20;

printf("&a=%x\n", &a);

printf("&b=%x\n", &b);

printf(" p=%x\n", p);

printf(" a=%d\n", a);

printf("*p=%d\n", *p);

}

//&a=bfbc9c1c

//&b=bfbc9c18

// p=bfbc9c1c

// a=20

//*p=20

//从中可以看出a的值存在栈中。

 

最新文章

  1. 为更好地设计数据库,重新整理sql server数据类型
  2. Nodejs&#183;理解Buffer
  3. POI中操作PPT获得每页的TABLE
  4. Windows Server 2008R2服务器安装及设置教程
  5. cocos2d-x如何解决图片显示模糊问题
  6. Cheatsheet: 2013 06.23 ~ 06.30, Farewell GoogleReader(2008.07.20~2013.06.30)
  7. magento-connect-manage出现404或者500内部错误的解决办法
  8. ios 百度地图
  9. (转载)C++中将构造函数或析构函数定义为private
  10. 从零开始学java(猜数字游戏)
  11. [POJ] 2239 Selecting Courses(二分图最大匹配)
  12. Git管理工具对照(GitBash、EGit、SourceTree)
  13. IWorkspaceFactory接口
  14. nmap比较详细的使用方法
  15. Oracle SQL Loader
  16. padding填充属性
  17. 浏览器中的 JS 和 Node.js 中的 JS
  18. jvm垃圾收集器与内存分配策略
  19. Master of GCD 【线段树区间更新 || 差分】
  20. php -- 魔术方法 之 自动加载:__autoload()

热门文章

  1. (待解决问题)nowrap在table和td都设置了宽度的时候仍然有效
  2. Python (九) 协程以及数据库操作
  3. linux基础随笔
  4. Trie树:应用于统计和排序
  5. win32 api Windows窗口的创建
  6. java学习之线程池的实现
  7. CodeForces 450B Jzzhu and Sequences 费波纳茨数列+找规律+负数MOD
  8. BZOJ 1455: 罗马游戏( 配对堆 + 并查集 )
  9. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
  10. 基于FPGA的DW8051移植(三)