⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codetc11.dat

📁 汇编指令字典2.0对学习汇编语言非常有用
💻 DAT
字号:
register 变量
  
  一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的.当程序中用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到运算器中.经过运算器进行运算,如果需要存数,再从运算器将数据送到内存存放.
  如果有一些变量使用频繁(例如在一人函数中执行9999次循环,每次循环中都要引用某局部变量),则为存取变量的值要花不少时间.为提高执行效率,C语言允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取.由于对寄存器的存取速度远高于对内存的存取速度,因此这样做可以提高执行效率.这种变量叫做"寄存器变量",用关键字register作声明.例如:输出1到5的阶乘的值.
                   int fac(int n)
                   {
                      register int i,f=1;   /* 定义寄存器变量 */
                      for(i=1;i<=n;i++)
                        f=f*i;
                   }
                   main()
                   {
                       int i;
                       for(i=1;i<=5;i++)
                         printf("%d!=%d\n",i,fac(i));
                   }
                   定义局部变量f和i是寄存器变量,如果n的值大,则能节约许多执行时间.

说明:
  (1) 只有局部自动变量和形式参数可以作为寄存器变量,其他(如全局变量)不行.在调用一个函数时占用一些寄存器以存放寄存器变量的值,函数调用结束释放寄存器.此后,在调用另一个函数时又可以利用它来存放该函数的寄存器变量.
  (2) 一个计算机系统中的寄存器数目是有限的,不能定义任意多个寄存变量.不同的系统允许使用的寄存器是不同的,而且对register变量的处理方法也是不同的,有的系统对register变量当作自动变理处理,分配内存单元,并不真正把它们存放在寄存器中,有的系统只允许将 int,char和指针型变量定义为寄存器变量.当今的优化编译系统能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定.因此在实际上用register声明变量是不必要的.读者对它有一定了解即可.
  (3) 局部静态变量不能定义为寄存器变量.不能写成  register static int a,b,c;不能把变量a,b,c既放在静态存储区中,又放在寄存器中,二者只能居其一.对一个变量只能声明为一个存储类别.

           
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -