sytn.net
当前位置:首页 >> C语言中函数变量的存储类型rEgistEr是什么意思 >>

C语言中函数变量的存储类型rEgistEr是什么意思

比如 for(int i = 0; i != 1000; ++i) ; 此时,i声明成寄存器类型,则++i操作会被优化,否则会先在内存访问i,然后++,最好将++i的值写入i的内存 但是,register只是建议变量保存在内存中,实际怎么实现还是要看变量类型和编译器实现 而且现代编译器一般会自动优化,将频繁使用的变量放到寄存器中

c语言变量存储类型 autostaticexternstatic externregister auto 局部变量 auto 变量是用堆栈(stack)方式占用储存器空间,因此,当执行此区段是,系统会立即为这个变量分配存储器空间,而程序执行完后,这个堆栈立即被系统收回.在大括号{}

选A.C语言中,声明变量的时候,如果类型前面不特别指明某些关键字(如static, extern, register)时,默认是auto,也称自动变量.这种变量一般是临时的,程序运行结束后,就由系统回收了.举个简单的例子:int a; 我们一般是这样定义变量的.其实系统自动会在int前面自动加上atuo,变成auto int a;所以函数的隐含存储类型是auto.其它的几个关键字各自都有其特殊的用途.

存储类型是auto,编译器默认给变量的(除非显示指定register、static类型)auto修饰的变量是自动变量.自动变量:函数中的局部变量如不特别申明为static存储类型,都是动态地分配存储空间,数据存储在动态存储区.在调用函数时,系统会给数据分配存储空间,在函数调用结束时就会释放这些存储空间.自动变量用关键字auto作为存储类别的申明,可以省略

c语言中的存储类型有static 、auto、extern、及register,函数默认的存储类型应该是extern,意思是具有外部链接性的.一般来说,会通过extern来声明函数.比如下面的代码,在1.c中定义一个函数,函数的声明写在1.h头文件中,在2.c中通过添加1.h的头文件,来声明及调用函数f().//1.c void f() { ; }//1.h extern void f();//2.c#include "1.h" int main() { f();}

我们知道, 每一个变量都有一个类型.另外, 每一个变量都有一个存储类.变量的存储类是由它被定义的地方决定的, 并且, 如果用了关键字, 则还要由关键字决定.有四个关键字描述存储类: extern, auto, static 和 register.存储类决定了两件事, 第一, 它控制哪些函数可以访问一个变量,第二, 存储类决定了变量在内存中的时间.

我想你说的应该是数据类型吧 没记错的话应该有以下几种:静态变量:变量的生存期是从程序开始到结束;动态变量:在程序运行当中需要调用该变量时才为它分配内存;寄存器变量:存在于寄存器中:用于需要高速存取数据的场合

C语言中的关键字register代表寄存器存储类型.register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度.这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率.

在c语言中,具体的存储类别有自动(auto)、寄存器(register)、静态(static)及外部(extern)四种. 静态存储类别与外部存储类别变量存放在静态存储区, 自动存储类别变量存放在动态存储区, 寄存器存储类别直接送寄存器.

A.auto B.static C.register D.extern A 的变量在堆栈里,自然是运行时 B 是静态变量 C 是寄存器变量,使用的是cpu的寄存器 D 是全局变量 BD都是放在数据段中的,编译的时候就已经确定了位置(有的编译器对b和d的处理不一样)

网站首页 | 网站地图
All rights reserved Powered by www.sytn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com