变量存储类型 register int

4.3   变量存储类型 
        Turbo   C2.0支持四种变量存储类型。说明符如下: 
          auto             static         extern         register 
下面分别来介绍。 
        一、auto 
        auto称为自动变量,   已在前面作了介绍,   这里不再重复。 
        二、static 
        static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。 
        1.   静态局部变量 
        它与局部变量的区别在于:   在函数退出时,   这个变量始终存在,   但不能被其它 
函数使用,   当再次进入该函数时,   将保存上次的结果。其它与局部变量一样。 
        2.   静态全程变量 
        Turbo   C2.0允许将大型程序分成若干独立模块文件分别编译,   然后将所有模块 
的目标文件连接在一起,   从而提高编译速度,   同时也便于软件的管理和维护。静态 
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与 
全程变量的区别是:   全程变量可以再说明为外部变量(extern),   被其它源文件使用, 
而静态全程变量却不能再被说明为外部的,   即只能被所在的源文件使用。 
        三、extern 
        extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外,   还要 
被其它文件使用。因此,       必须将全程变量通知每一个程序模块文件,       此时可用 
extern来说明。 
        例如: 
                文件1为file1.c                                     文件2为file2.c 
        int   i,   j;/*定义全程变量*/                 extern   int   i,   j;/*说明将i,   j从 
                                                                                                          文件1中复制过来*/ 
        char   c;                                                     extern   char   c;   /*将c复制过来*/ 
        void   func1(int   k);                               func2()                 /*用户定义函数*/ 
                                                                          { 
        main()                                                             static   float   k;/*定义静态变量*/ 
        {                                                                       i=j*5/100; 
                    func1(20);/*调用函数*/                 k=i/1.5; 
                    func2();                                                       . 
                    .                                                                     . 
                    .                                                                     . 
                    .                                                         } 
          } 
          func1(int   k)   /*用户定义函数*/ 
          { 
                    j=k*100; 
          } 

        对于以上两个文件file1.c和file2.c,   用Turbo   C2.0的集成开发环境进行编译 
连接时,   首先应建立一个.prj的文件。例如file.prj,   该文件内容如下: 
          file1.c 
          file2.c 
        然后将file.prj的文件名写入主菜单Project中的Project   Name项中。   再用F9 
编译连接,   就可产生一个文件名为fioe.exe的可执行文件。 
        外部变量和FORTRAN语言中的COMMOM定义的公共变量一样。 
        四、register 
        register称为寄存器变量。它只能用于整型和字符型变量。定义符register说 
明的变量被Turbo   C2.0存储在CPU的寄存器中,     而不是象普通的变量那样存储在内 
存中,   这样可以提高运算速度。但是Turbo   C2.0只允许同时定义两个寄存器变量, 
一旦超过两个,   编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量 
来处理。因此,   寄存器变量常用在同一变量名频繁出现的地方。 
        另外,   寄存器变量只适用于局部变量和函数的形式参数,   它属于auto型变量, 
因此,   不能用作全程变量。定义一个整型寄存器变量可写成: 
            register   int   a; 
        对于以上所介绍的变量类型和变量存储类型将会在以后的学习中,   通过例行程 

序中的定义、使用来逐渐加深理解。 

*******************************************************************************

在《C陷阱与缺陷》的练习5-2中看到了Register int  .

Register声明的作用

是为了提高效率。 
它明确要求CPU把变量始终保存在寄存器里面,直至它消亡。 
不过现代编译器都很厉害,根本不需要你多此一举。 
所以根本就极少用。

 

补充: 
        大多数情况下,你声明了也没有用,因为编译器不会照你说得做,而是在系统优化的时候自己决定让哪些作为寄存器变量存在。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值