C++关键字(static/register/atuo/extern/volatile/const)释疑

原创 2003年09月19日 00:03:00

下面关于C++的几个关键字是经常和我们打交道的而我们又经常对这些含糊不清的,本文根据自己的学习体会作以总结,以期达到真正理解和活用的目的。

static

l         静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可改变其值。

l         静态变量或静态函数,即只有本文件内的代码才可访问它,它的名字(变量名或函数名)在其它文件中不可见。

l         在函数体内生成的静态变量它的值也只能维持

int max_so_far( int curr )//求至今(本次调用)为止最大值<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

{

   static int biggest; //该变量保持着每次调用时的最新值,它的有效期等于整个程序的有效期

   if( curr > biggest )

      biggest = curr;

   return biggest;

}

l         C++类的成员变量被声明为static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员(变量或函数)。

         

register

l         register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器中;但对32位编译器不起作用,当global optimizations(全局优化)开的时候,它会做出选择是否放在自己的寄存器中;不过其它与register关键字有关的其它符号都对32位编译器有效。

auto

l         它是存储类型标识符,表明变量(自动)具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。

extern

l         声明变量或函数为外部链接,即该变量或函数名在其它文件中可见。被其修饰的变量(外部变量)是静态分配空间的,即程序开始时分配,结束时释放。用其声明的变量或函数应该在别的文件或同一文件的其它地方定义(实现)。在文件内声明一个变量或函数默认为可被外部使用。

l         C++中,还可用来指定使用另一语言进行链接,这时需要与特定的转换符一起使用。目前Microsoft C/C++仅支持”C”转换标记,来支持C编译器链接。使用这种情况有两种形式:

u       extern “C” 声明语句

u       extern “C” { 声明语句块 }

volatile

l         限定一个对象可被外部进程(操作系统、硬件或并发线程等)改变,声明时的语法如下:

int volatile nVint;

       这样的声明是不能达到最高效的,因为它们的值随时会改变,系统在需要时会经常读写这个对象的值。       只常用于像中断处理程序之类的异步进程进行内存单元访问。

const

l         const所修饰的对象或变量不能被改变,修饰函数时,该函数不能改变在该函数外面声明的变量也不能调用任何非const函数。在函数的声明与定义时都要加上const,放在函数参数列表的最后一个括号后。

l         C++中,用const声明一个变量,意味着该变量就是一个带类型的常量,可以代替#define,且比#define多一个类型信息,且它执行内链接,可放在头文件中声明;但在C中,其声明则必须放在源文件(即.C文件)中,在Cconst声明一个变量,除了不能改变其值外,它仍是一具变量,如

const int maxarray = 255;

char store_char[maxarray];  //C++中合法,C中不合法

l         const修饰指针时要特别注意。例:

         

C语言中关键字const、static、volatile的用法分析

const 作为一个程序员,我们看到关键字”const”时,首先想到的应该是”只读”。因为,它要求其所修饰的对象为常量,不可对其修改和二次赋值操作(不能作为左值出现)。看几个例子: co...
  • yayawy
  • yayawy
  • 2016年05月16日 16:07
  • 3729

C语言中的const、extern及结构体、联合体的定义

Const Const关键词并不能把一个变量变成一个常量, 在符号前加上const表示这个符号不能被赋值, 即他的值对这个符号来说是只读的, 但并不代表这个值不能用其他方法去改变. 通过下面的例子就...
  • u011392772
  • u011392772
  • 2015年08月21日 09:38
  • 2509

ios高效开发-如何正确使用const,static,extern

前言 本篇主要介绍在开发中怎么使用const,static,extern3个关键字,如果喜欢我的文章,可以关注我微博:吖了个峥,也可以来小码哥,了解下我们的iOS培训课程。后续还会更新更多内容。...
  • daleiwang
  • daleiwang
  • 2016年01月25日 15:32
  • 6642

C++关键字(static/register/atuo/extern/volatile/const)释疑

下面关于C++的几个关键字是经常和我们打交道的而我们又经常对这些含糊不清的,本文根据自己的学习体会作以总结,以期达到真正理解和活用的目的。 static l         静态变量作用范围在一个...
  • Ture010Love
  • Ture010Love
  • 2011年09月17日 14:47
  • 396

C++ 关键字 static register const volatile extern

C++ 关键字static,register,const,volatile,extern static 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为 0,使用时...
  • wdkirchhoff
  • wdkirchhoff
  • 2014年12月02日 11:15
  • 822

C语言中关键字auto、static、register、const、volatile、extern的作用

关键字auto、static、register、const、volatile、extern 这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto  ...
  • wajh07
  • wajh07
  • 2014年06月04日 16:53
  • 774

C语言中关键字auto、static、register、const、volatile、extern的作用

文章转载:http://www.cnblogs.com/candyming/archive/2011/11/25/2262826.html 这些关键词都是c++基础知识,我整理了一下,希望对新学...
  • u011394362
  • u011394362
  • 2015年02月21日 20:36
  • 416

C语言中关键字auto、static、register、const、volatile、extern的作用

关键字auto、static、register、const、volatile、extern 这些关键词都是c++基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto   这...
  • zlcrypto
  • zlcrypto
  • 2012年06月30日 21:14
  • 248

C语言关键字auto、static、register、const、volatile、extern的作用

关键字auto、static、register、const、volatile、extern 这些关键字是C语言中常见的也是是c++的基础知识,我整理了一下,希望对新学的朋友们有用: (1)auto...
  • caoyouming0609
  • caoyouming0609
  • 2017年03月21日 17:17
  • 186

关键字:auto、static、register、const、volatile 、extern 总结【转贴】

auto、static、register、const、volatile 、extern 总结【转贴】 2007年06月20日 星期三 11:22 (1)auto   这个这...
  • liu_hang_yu
  • liu_hang_yu
  • 2012年02月11日 10:09
  • 374
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++关键字(static/register/atuo/extern/volatile/const)释疑
举报原因:
原因补充:

(最多只允许输入30个字)