当前位置: 首页 > news >正文

C语言之数据的存储类别

在C语言中,变量除了有类型之分,还有四种存储类别:自动存储变量,静态存储变量,外部存储变量,寄存器存储变量。

(1).自动存储变量

1.性质:

       --作用域的局部性,其作用域为变量定义所在的模块(一对花括号围起来的部分)内或函数内。

       --生存期的暂时性,其生存期为该变量定义所在的函数或模块的执行周期。即一旦进入该函数,c就自动为该变量建立存储区,而一旦退出该函数,c就自动收回此存储区。

       --未初始化的变量其值不确定,是无意义的。

(2)定义 关键字auto(也可无),auto int i,j;

举例:

main()
{
    int i=100,k=80;
    printf("i=%d\n",i);
    {
    int i=200;
    printf("i=%d k=%d\n",i,k++);

    }
    printf("i=%d k=%d",i,k);
    getch();
}

(2)静态存储变量

1.定义: static 数据类型 变量名=初值;

2.种类: 全局和局部两种。

-静态局部存储变量,仅能在所定义的模块内存使用,与AUTO变量不同,它可以保持原值不便:

count_up()
{
    static int number=25;
    number+=25;
    return(number);
}

-静态全局变量,

.性质:作用域-整个程序。生存期的永久性,未初始化的静态变量值为0;

3.静态变量和自动存储变量的区别。

main()
{
    count_up();
    count_up();
    printf("\n");
    add();
    add();
    getch();
}
count_up()
{
    static int num0=0;
    num0+=25;
    printf("%d\t",num0);
}
add()
{
    auto int num1=0;
    num1+=25;
    printf("%d\t",num1);
}

运行结果:

25       50

25       25

(3)外部存储变量

1.用途     用于把大程序分隔若干单元(文件)而开发的场合。说明外部存储变量使用关键字extern。

(4)寄存器存储变量

关键字:register 如:register int e;

寄存器存储变量值存储在CPU的寄存器中,设定这种变量主要是为了提高操作速度。他们常用于循环控制。使用SI,DI寄存器。如果定义寄存器变量超过两个,则多余的按照自动存储变量对待。

阅读全文
类别: c语言学习  查看评论

转载于:https://www.cnblogs.com/kuwoyidai/archive/2010/07/12/2105627.html

相关文章:

  • 算法的基本概念
  • 基于GPS数据建立隐式马尔可夫模型预测目的地
  • 转载 线程池之ThreadPool类与辅助线程 - 第二篇
  • 常见异常
  • 供应大型热水工程
  • 程序员为什么要高薪?看完让你勇于为自己开价
  • 更换XPE开关机画面和欢迎界面的方法
  • YUM安装调试以及命令具体解释
  • 深入理解alias, alias_method和alias_method_chain
  • golang包管理工具glide安装
  • 为寻求新增长点 山寨之父MTK发力Android
  • Use SourceLink enables a great source debugging experience
  • 【书籍推荐】Expert Oracle Practices
  • CodeForces-4C Registration system
  • 利用浏览器的搜索框作更多的事情
  • [case10]使用RSQL实现端到端的动态查询
  • 【347天】每日项目总结系列085(2018.01.18)
  • 10个确保微服务与容器安全的最佳实践
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • angular2 简述
  • C++入门教程(10):for 语句
  • chrome扩展demo1-小时钟
  • Fabric架构演变之路
  • github指令
  • HTTP中的ETag在移动客户端的应用
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • IDEA常用插件整理
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java多态
  • miaov-React 最佳入门
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Node 版本管理
  • python docx文档转html页面
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 阿里云前端周刊 - 第 26 期
  • 程序员最讨厌的9句话,你可有补充?
  • 搞机器学习要哪些技能
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于axios的vue插件,让http请求更简单
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 爬虫模拟登陆 SegmentFault
  • 悄悄地说一个bug
  • 如何利用MongoDB打造TOP榜小程序
  • 因为阿里,他们成了“杭漂”
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 终端用户监控:真实用户监控还是模拟监控?
  • puppet连载22:define用法
  • 回归生活:清理微信公众号
  • ​linux启动进程的方式
  • ###C语言程序设计-----C语言学习(6)#
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)Nginx简介和安装教程
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (4)STL算法之比较