Static
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。

Const
我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。去年Dan
Saks 已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)
如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?
  const int a;
  int const a;
  const int *a;
  int * const a;
  int const * a const;
  /******/
  前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 ,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

static and const相关推荐

  1. C++ static与const用法详解

    目录 static的作用: 对普通变量: 1.局部变量: 2.全局变量 对类中变量: 1.成员变量 2.成员函数 const的作用: static的作用: 对普通变量: 1.局部变量: 在局部变量之前 ...

  2. C/C++关键字 static 和 const

    C/C++关键字 static 和 const 一.关键字static 参考:https://www.cnblogs.com/BeyondAnyTime/p/2542315.html 1. 静态全局变 ...

  3. C/C++中Static和Const的作用

    C/C++中Static和Const的作用     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53118850 一.c ...

  4. C++ static、const对象声明与定义 问题来源?

    问题源自书<C++primer>(第四版·特别版). 书401页下面注意中写道: const static 数据成员在类的定义体中初始化时,该数据成员仍必须在类的定义体之外进行定义. 书4 ...

  5. 理解PHP5中static和const关键字

    PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想.我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助. (1) s ...

  6. 关于static 和 const

    static和const 的概念老是搞不清楚..下面就从网上摘录下部分区别: 关于static 在c中,static 用于信息屏蔽,你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可以 ...

  7. c语言中{的作用,C语言中Static和Const关键字的作用

    C语言中Static和Const关键字的作用 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于(堆)中.那么关于C语言中Static和Const关键字的作用,你了解多少 ...

  8. C++ static、const和static const类型成员变量声明及其初始化

    C++ static.const和static const类型成员变量声明及其初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. ...

  9. C++ static、const和static const 以及它们的初始化

    const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. static表示的是静态的.类的静态成员函数.静态成员变量是和类相关的,而不是和类的 ...

  10. static、const、volatile等关键字作用

    目录 一.需要明白c语言中对象的一些属性 1.C语言中内存分配 2.变量的作用域 3.链接属性 4.存储期 二.static.const.volatile关键字作用 1.static关键字作用 2.c ...

最新文章

  1. C++ STL: 超详细 容器 deque 以及 适配器queue 和 stack 源码分析
  2. Python 办公自动化,一键给PDF文件加密,超方便
  3. Android 网络编程系列(5)Volley 网络框架入门
  4. [备忘][转载]apache 403错误 You don't have permission to access on this server
  5. u盘安装linux双系统6,用U盘安装Centos6.5 + Win7 双系统
  6. oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
  7. C++string容器-插入和删除
  8. Go语言、Docker 和新技术
  9. centos7编译 openjdk8
  10. spring-boot 一款无侵入型,轻量级的接口文档生成工具apiggs
  11. 7-2 定义日期类 (28 分)
  12. python版本升级导致_python升级导致yum使用报错
  13. 数据结构 快速排序的三种实现 (hoare版本 挖坑法 前后指针版本)与非递归实现
  14. elixir 关键字列表
  15. 安卓ttf格式的字体包_字体 | 新游黑体(游)精巧的日系字体~
  16. java rxtx下载_rxtx-2.1-7r2 jav
  17. 8086、80286、80386
  18. office Word中手动添加MathType插件
  19. php判断是否是全英文,php判断字符串是否全英文,纯中文,中英文组合的方法
  20. 自定义View 仿QQ运动步数进度效果

热门文章

  1. 当年这个决定,让李飞飞奠定 AI 江湖的女王地位
  2. 国外机器人产业发展经验
  3. 推荐系统入门必读论文
  4. Jupyter Notebook入门攻略
  5. md5值最大长度_豆长老之比特币-哈希值是什么11月16日分享篇
  6. Google和微软哪个更可怕?
  7. 经理必看的8个管理网站
  8. 大手笔!EDG夺冠TCL奖励300万,还送全系AI家电一套
  9. iPhone 13 Pro系列被抢疯:官网已推迟36天发货
  10. iPhone 12在二季度iPhone出货量中占63% 低于iPhone 11同期