C语言提供的四种存储类别

njfylong 2009-09-13 08:39:52
在C语言中提供了四种存储类别:auto、extern、register、static,它们之间有什么区别?
...全文
563 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
njfylong 2009-09-15
  • 打赏
  • 举报
回复
谢谢各位!
aozhi 2009-09-14
  • 打赏
  • 举报
回复
register是建议性的,编译器有时会忽略register请求。比如定义了太多的register变量时。此时被忽略请求的register变量和auto变量应该没有区别。
wanghui2008se 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 heyapeng1990911 的回复:]
      auto:自动变量
  auto存储在内存的堆栈区,属于临时性存储变量,并不长期占用内存,可以被多次覆盖。
        register:寄存器变量
  register与auto一样属于自动类别。区别在于register的值保存在CPU的寄存器中。计算机中只有寄存器中的数据才能直接参与运算,而一般变量是放在内存中的,变量参加运算是,需要先把变量从内存中取到寄存器中,然后计算。所以一般把使用最频繁的变量定义成register变量。register变量只能在函数中定义,并只能是int和char型。
        static:静态变量
  static一般存储在数据区,,这类变量在数据说明时被分配了一定的内存空间,程序运行期间,它占据一个永久的存储单元,,因此在对出函数后,存储单元中的值仍旧保留。简单说,程序运行时static型变量的值可以被语句改变,但当程序运行结束后,其值又变回原来的值。
        extern:外部类型
  estern变量在数据运行时被分配了一定的内存空间,该空间在整个运行程序中,只要程序存在,自始自终都被该变量使用,即其值始终不变。

[/Quote]
懂了吗
heyapeng1990911 2009-09-13
  • 打赏
  • 举报
回复
auto:自动变量
auto存储在内存的堆栈区,属于临时性存储变量,并不长期占用内存,可以被多次覆盖。
register:寄存器变量
register与auto一样属于自动类别。区别在于register的值保存在CPU的寄存器中。计算机中只有寄存器中的数据才能直接参与运算,而一般变量是放在内存中的,变量参加运算是,需要先把变量从内存中取到寄存器中,然后计算。所以一般把使用最频繁的变量定义成register变量。register变量只能在函数中定义,并只能是int和char型。
static:静态变量
static一般存储在数据区,,这类变量在数据说明时被分配了一定的内存空间,程序运行期间,它占据一个永久的存储单元,,因此在对出函数后,存储单元中的值仍旧保留。简单说,程序运行时static型变量的值可以被语句改变,但当程序运行结束后,其值又变回原来的值。
extern:外部类型
estern变量在数据运行时被分配了一定的内存空间,该空间在整个运行程序中,只要程序存在,自始自终都被该变量使用,即其值始终不变。
RJS_April 2009-09-13
  • 打赏
  • 举报
回复
楼上说的已经很详细了
pigniyan 2009-09-13
  • 打赏
  • 举报
回复
在C语言中提供了四种存储类别:auto、extern、register、static,它们之间有什么区别?
auto可以省略了,现在还有人用吗?你在程序中声说一个变量,比如int i,其中i就是auto型
extern 这是用来声明外部变量,可以用于此程序外的程序中,类型要一致
register这是个用来声明寄存器变量的,读取速度最快,但是寄存器只能存储一个字,空间有限,数量有限
static是声明静态变量的,也就是C语言中的私有成员.如果在一个函数中声明一个静态变量,静态变量的空间不在栈里面,而是存储在静态空间里,这个函数结束后,静态变量的值依旧存在,内存不会收会此变量占用的内存空间,而是等整个程序都结果后才收回静态变量空间.
shiweifu 2009-09-13
  • 打赏
  • 举报
回复
auto:默认的对象是用这个修饰的
extern:表示对象已经在其他地方声明了
register:向编译器建议把变量存储到寄存器中,这样可以提高读写速度
static:静态对象。。对象在程序结束时才销毁

说的不太准确,LZ可以参考下其他资料
kouwenlong 2009-09-13
  • 打赏
  • 举报
回复
这些我都没有注意,还是一样.
mstlq 2009-09-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20041122/21/3578178.html

70,017

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧