宏定义

// 宏定义只是替身,不需要小括号,一般命名用大写字母
#define B(c) c*c
main(){int m=5, n=8,k;
k=10*B(m+n); // 是 10*5+8*5+8=98 而不是10*(5+8
)*(5+8)
printf("%d",k);
}

局部变量

定义变量可能有3种情况:

(1)在函数的开头定义;
(2)在函数内的复合语句内定义;
(3)在函数的外部定义。

具体定义:

在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的。在复合语句内定义的变量只在本复合语句范围内有效,只有在本复合语句内才能引用它们。在该复合语句以外是不能使用这些变量的,以上这些称为“局部变量”。

全局变量

定义

在函数外部定义的变量属于外部变量也成全局变量或全程变量。
全局变量可以为本文件的其他函数所使用的。
它的有效范围是定义开始到本源文件结束。

全局变量与局部变量同名

局部变量的存储类别

1. 自动变量用 auto 关键字声明。也可以不写auto,默认隐含为自动存储类别。函数中的形参和局部变量都属于此类型。在调用函数时,系统自动给变量分配存储空间,在调用结束时会自动释放此空间。int f(int a){auto int b,c=3;}2. 静态局部变量用 static 关键字声明。希望在函数中的局部变量在结束后不消失而继续保留原值,即占用的存储空间不变,在下一次调用时,可以继续使用其值,这个时候就需要使用局部静态变量来声明。3.寄存器变量用 register 关键字声明。一般来说静态变量、动态变量都谁存储在内存中,每次用某个变量的值,都会先从内存中取出来,送到计算器,如果需要存数,在存到内存中。次数太多的话,10000次循环?这个过程就太耗费时间,为提高效率,可以吧这些变量存到cpu的寄存器中,需要时直接从寄存器取,因为寄存器的读取比内存读取快很多,所以这些变量就叫寄存器变量。如:register int a;

全局变量的存储类别:

全局变量都是存放在静态存储区的,它的生命周期是固定的,存在于整个程序运行中。只是其作用于需要看不同的存储类别。如以下几种情况
声明为外部变量 用 extern 关键字。
声明为进本文件可用  用 static 关键字1. 在一个文件内部扩展外部变量的作用域
2. 将外部变量的作用域扩展到其他文件
3. 将外部变量的作用于限制在本文件内



c语言语法基础之——局部变量及存储类别、全局变量及存储类别、宏定义 学习相关推荐

  1. C语言有四种基本常量,C语言语法基础

    声明:本课件在电脑上可正常浏览,在手机或平板电脑上只能浏览到简介. C语言语法基础的内容简介: 一..标识符 一个名字,对常量.变量.类型.语句.标号和函数进行命名 标识符的种类: 关键字 预定义标识 ...

  2. WAP建站WML语言语法基础教程

    完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试.从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的 ...

  3. c语言程序中注释定义,C语言语法基础:函数注释等等

    任何语言的入门大部分都是从Hello World开始的,我们学习到C语言也不例外.现在很多人说C语言很难,建议Java或者是Python入门.四喜想说的是,万事开头难,如果以C语言入门,之后的其他语言 ...

  4. C语言零基础入门级 递归+回调+字符串函数+面试题全讲解【系统学习第六天】

    C语言零基础入门级 函数大全+面试题全讲解 [1]C语言->函数入门 [2]C语言->函数的定义 [3]C语言-> 函数实参与形参 [4]C语言->函数调用的流程 [5]C语言 ...

  5. go语言语法基础-map类型

    文章目录 一. 前言 二. map的创建 1. 声明不赋值 1) 语法 2) 使用 make() 函数 开辟空间赋值 a. make的语法 b. 案例源码 2. 声明并赋值 三. map的增删改查 1 ...

  6. c语言语法基础之——概念理解

    学习记录: c语言必须先声明全部变量空间,在使用 : java可以在用的时候去声明空间 "\n%d / %d = %d\n%d %% %d = %d",a,b,c,a,b,d 输出 ...

  7. 【数据库基础】01_数据库概述与MySQL语法基础

    1. 数据库应用 1.1 概述 1.1.1 什么是数据库 简而言之,就是存储数据,管理数据的仓库. 数据库的好处 持久化数据到本地. 可以实现结构化查询,方便管理. DB:数据库(database): ...

  8. 【C语言零基础全套课件】

    [C语言零基础全套课件] [文章列表] [文章列表] C语言最基础的知识图文 vsCode环境安装及插件安装 vsCode安装与使用[图文并茂] C语言零基础入门级学习程序框架[系统学习第一天] C语 ...

  9. 【C语言】----宏定义,预处理宏

    什么是宏? 宏是学习任何语言所不可缺少的,优秀的宏定义可以使得代码变得很简洁且高效,有效地提高编程效率. 宏是一种预处理指令,它提供了一种机制,可以用来替换源代码中的字符串,解释器或编译器在遇到宏时会 ...

最新文章

  1. 使用vim保存权限不够的文件
  2. 周末话题-元编程(metaprogramming)
  3. python的@修饰符
  4. php uncaught thrown,PHP异常详解
  5. 题目2:隐式图的搜索问题(A*算法解决八数码)
  6. java 控制 android_Java For Android - 流程控制
  7. python相同key合并value_Python快速入门最需掌握的4个知识点
  8. MyBatis逆向工程自动生成代码(附数据库表结构)
  9. (机器视觉)Halcon下颜色识别与联合C#编程
  10. 直击Kafka的心脏——控制器
  11. python学习笔记1-基础语法
  12. 习惯性朴实简单!一起学习MySQL常见单行函数,字符数学日期流程控制
  13. nth-child(n)和nth-of-type(n)
  14. Air与java通信
  15. Nginx学习笔记(三) Nginx基本数据结构
  16. struts2源码系列(3)--拦截器
  17. 从零基础入门Tensorflow2.0 ----五、19. feature_column , keras_to_estimator
  18. oracle如何查不满16岁,如何在Oracle数据库中使用SQL查询获取基于年龄组的人数?...
  19. Atitit.预定义变量与变量预处理器
  20. jsmy97时间控件,时间范围选择

热门文章

  1. iphone常用代码锦集(二)
  2. VNode――Beijing OpenParty晓风归雁后记
  3. 好看简洁的网站跳转页面
  4. c语言程序设计竞赛策划书,C语言程序设计策划书
  5. 5G智慧灯杆网关实现“一杆多用”
  6. 【ZDNS分享】广电行业(四)DHCP解决方案
  7. 语音合成数据解决方案助您获取专属AI声音
  8. 检测手机号码是否合法(正则表达式)
  9. 苹果7手机通讯录删除了还能够找回来么
  10. 清华大学计算机系研究生培养方案,攻读硕士学位研究生培养方案