c语言字面量的作用是为变量,C语言(五) C 全局变量,局部变量,静态变量和常量...

一. 全局变量

全局变量是在所有函数体的外部定义的,程序的所有部分(其他文件的代码)都可以使用。全局变量不受作用域的影响。全局变量的生命周期一直到程序的结束,全局变量是静态存储方式。

例:

#include #include /* a 就是一个全局变量*/

int a = 2;

int main(int argc, char *argv[]) {

printf("int 存储大小 : %d \n", a);

return 0;

}

如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个变量。

例:

在a.c中定义一个全局变量

#include #include int a = 3;/*定义在a.c文件中的全局变量a*/

在main.c中使用extern关键字引用a.c中的全局变量a

#include #include /* 使用extern管金子引用a.c中的全局变量a*/

extern int a;

int main(int argc, char *argv[]) {

printf("int 存储大小 : %d \n", a);

return 0;

}

二.局部变量

局部变量出现在一个作用域内,它们是局限于一个函数的。局部变量经常被称为自动变量,因为它们在进入作用域时,自动生成,离开作用域时自动消失。关键字auto可以显示的说明这个问题,但局部变量默认为auto,所以没必要声明为auto。通常函数里定义的变量,函数的参数都局部变量。所以一般需要在某个函数里,返回数组的地址或者指针之类,这时候必须定义成static,或者动态申请内存,这样函数结束返回时才不会释放掉那块内存空间。

寄存器变量也是一种局部变量。register来修饰,就是告诉编译器尽可能快的访问这个变量,通过存放在寄存器中来实现快速访问。

三.静态变量

静态变量的修饰关键字是static,static可以作用于变量以及函数。由static修饰的,可分为静态局部变量,静态全局变量,静态函数。静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量

1.静态局部变量

在局部变量前面加上static后,就定义了静态局部变量,静态局部变量属于静态存储方式,静态局部变量只会被初始化一次,下次使用依据上一次保存的值。它具有以下特点:

(1)  静态局部变量在函数内定义 ,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。(作用域不变,生存周期变了)

(2)  允许对构造类静态局部量赋初值 ,例如数组,若未赋以初值,则由系统自动赋以0值。(而非静态局部变量未赋初始值,系统会给个随机值)

(3)  对基本类型的静态局部变量,若在说明时未赋以初值,则系统自动赋予0值。而对自动变量没有赋初值,则其值是随机值。

静态局部变量是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了上次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

2.静态全局变量

全局变量(外部变量)的说明之前再加static 就构成了静态全局变量。static全局变量只初使化一次,防止在其他文件单元中被引用。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

四.常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

定义常量

在 C 中,有两种简单的定义常量的方式:

使用 #define 预处理器。

使用 const 关键字。

#define 例子:

#include #define LENGTH 10

#define WIDTH 5

#define NEWLINE '\n'

int main()

{

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

}

const 例子:

#include int main()

{

const int LENGTH = 10;

const int WIDTH = 5;

const char NEWLINE = '\n';

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河南理工大学c语言报告封面,河南理工大学图书信息管理系统设计_纯c语言课程设计.doc...

河南理工大学图书信息管理系统设计_纯c语言课程设计C语言课程设计报告题 目:图书信息管理系统设计河南理工大学计算机学院目 录第一章 题目与要求1.1 问题提出11.2 本系统涉及的知识点11.3 功能要求1第二章 功能设计2.1 算法设计12.2 部分模块流程图4第三章 程序代码…

vfp程序转换为c语言程序软件,c语言程序设计及vfp程序设计试题.doc

c语言程序设计及vfp程序设计试题高级语言(C)程序设计部分(满分100分)一、单项选择题(每小题1分,共20分)1、在C语言中,不正确的int类型的常数是( )A、32768  B、0  C、037   D、0xAF2、设变量x为float型且已经赋值,则以下语句中能够将x中…

python是由c语言编写的么,在python中使用c语言编写的库

本文使用的 cffi 官网网址:https://cffi.readthedocs.io/en/latest/overview.htmlcffi 自己本身使用了pycparser 这个库,是用python编写的c语言parser库,官网地址: https://github.com/eliben/pycparserpython被称为是“胶水语言”…

c语言小明今年16岁,C语言1.爷爷对小明说:我现在的年龄是你的7倍,过几年是你的6倍,再过若干年就分别是你的5倍,4倍,3倍,2倍.你知道爷爷和小明现在的年龄吗?...

满意答案ta_meng2013.06.15采纳率&#xff1a;49% 等级&#xff1a;12已帮助&#xff1a;5126人#include void main(){int i,j,k;int t60,t50,t40,t30,t20; //用于标记是否达到过这些要求&#xff0c;C语言貌似没有bool类型吧for (i21;i<200;i7) //爷爷的年龄为i{ji/7;…

android 控件坐标转换,Android自定义动画根据控件Y轴旋转动画(仿红包)

这里给正在学安卓的小白们分享一个动画吧&#xff0c;用处挺多&#xff0c;代码也不多&#xff0c;还望各位大佬不要打击。进入正题&#xff0c;先看看效果效果很炫酷很美好好了 来看代码吧 该说的都在代码注释里面 这个不用多说 代码极其简单//自定义一个类继承Animation(…

android datepicker 自定义,android – 如何使用两个datepicker创建自定义对话框?

最好先阅读Dialogs和Pickers.至于实现,您可以有两个按钮&#xff1a;一个用于显示开始日期的日期选择器,另一个用于显示结束日期.编辑&#xff1a;如果你真的想在1个对话框中显示2个日期选择器,这里有一个如何做的例子.首先,创建自定义XML布局./res/layout/custom_date_picker.…

Android usb 权限广播,android10.0 USB弹窗权限流程解析

USB请求权限流程1. 新建activity&#xff0c;获取UsbManager usbManager (UsbManager) getSystemService(Context.USB_SERVICE)2. 获取所以的USB设备HashMap map usbManager.getDeviceList()3. 过滤别的USB设备&#xff0c;拿到自己USB的USBDevice类&#xff0c;然后请求USB权…

RN做的Android应用反编译,macOS Catalina配置Android反编译三件套 apktool/dex2jar/enjarify/jd-gui...

创建目录$ cd ~$ mkdir Android$ cd Android12345$cd~$mkdirAndroid$cdAndroid下载安装配置dex2jar$ wget https://github.com/pxb1988/dex2jar/files/1867564/dex-tools-2.1-SNAPSHOT.zip// 本站 wget https://www.mobibrw.com/wp-content/uploads/2020/07/dex-tools-2.1-SNAP…

android手势监听功能吗,Android手势监听 OnGestureListener (短按,长按,慢滑动,快滑动)...

/*** 以下方法中的参数解释&#xff1a;* e1&#xff1a;第1个是 ACTION_DOWN MotionEvent 按下的动作* e2&#xff1a;后一个是ACTION_UP MotionEvent 抬起的动作(这里要看下备注5的解释)* velocityX&#xff1a;X轴上的移动速度&#xff0c;像素/秒* velocityY&#xff1a;Y轴…

android 仿网易标题栏,仿网易新闻可滑动标题栏TabLayout(文字或图标)

近期有需要&#xff0c;要做一个类似于网易新闻首页中的可滑动标题栏 TabLayout&#xff0c;根据大神写的 FlycoTabLayout 改造了一下&#xff0c;可以加载网络图片&#xff0c;主要实现内容如下&#xff1a;1. 可配置标题选中效果(下划线/上三角/圆角矩形或椭圆)&#xff1b;2…

android 多态如何组件化,Android组件化之子模块之间通信方案

1 背景Android开发中你的模块(Module)一般只有一个app主模块&#xff0c;随着功能不断扩展你会发现一个模块的缺点就是各种业务高度耦合&#xff0c;你就想测试登录模块&#xff0c;那么你可能会把支付模块也编译进去了&#xff0c;代价就是编译耗时&#xff0c;降低效率。大牛…

unity android sd卡路径,一、文件与路径——2、unity路径特点写法和文件读写全攻略...

1、Unity中各路径和目录的对应关系image.png其中&#xff0c;安卓中的路径是有两种分支的image.png在打包面板中&#xff0c;有个Write Access当我们选择Internal Only就是表示沙盒路径&#xff0c;/data/data/com.xxx.xxx/对应的Android方法为 getFilesDir()当我们选择SDCard时…

html 图片行内剧中,HTML入门(转义字符、行内样式和块级元素、定位、锚点、跑马灯标签、图片标签、表格标签的讲解)...

一、转义字符由特殊字符包裹的文本 会当做标签去解析对应不换行空格对应全角空格 em是字体排印学的计量单位&#xff0c;相当于当前指定的点数。其占据的宽度正好是1个中文宽度&#xff0c;而且基本上不受字体影响。<对应<>对应>二、行内元素和块级元素1.块级标签默…

html scale方法的作用,HTML Canvas scale() 方法

实例绘制矩形&#xff0c;放大到 200%&#xff0c;然后再次绘制矩形&#xff1a;YourbrowserdoesnotsupporttheHTML5canvastag.JavaScript&#xff1a;var cdocument.getElementById("myCanvas");var ctxc.getContext("2d");ctx.strokeRect(5,5,25,15);ctx…

html屏幕输出笔记本,笔记本怎样外接显示器 笔记本外接显示器方法【详解】

摘要&#xff1a;笔记本电脑怎样外接显示器?一些用户用惯了大屏台式电脑的朋友&#xff0c;改用笔记本玩游戏&#xff0c;看电影等开始会很不习惯&#xff0c;由于笔记本的屏幕与键盘相比台式机要小上一大截。如果身边有显示器或者液晶电视的话&#xff0c;不妨动手体验下笔记…

江陵中学2021高考成绩查询,2021高考序幕拉开 荆州38080名考生赴考

十年寒窗磨一剑&#xff0c;只待今朝问鼎时&#xff0c;6月7日上午&#xff0c;2021年全国高考正式拉开序幕&#xff0c;荆州3.8万余名考生迎来人生大考。上午8点&#xff0c;在湖北省沙市中学考点周围&#xff0c;不少身着红色送考服的班主任们正在给考生们发放准考证&#xf…

html怎么播放下一首,javascript – HTML5音频播放列表 – 第一个结束后如何播放第二个音频文件?...

这是一个JSLinted,不引人注目的Javascript示例,演示如何处理和使用结束的mediaevent.在您的特定情况下,您将触发在您的结束事件处理程序中播放第二个音频文件.单击播放列表中的项目开始播放.一个音频结束后,下一个音频开始.标记&#xff1a;(注意,有意避免< li>元素之间的…

排球制作html,MAYA打造排球建模教程

这篇教程向悠悠之家的朋友们介绍用MAYA打造排球模型的过程&#xff0c;制作很简单&#xff0c;希望对刚学习MAYA建模的朋友们有所帮助&#xff0c;我们先看看最终的效果图&#xff1a;你们一定学过很多创建一个球的技巧&#xff0c;但在这个入门教学里面&#xff0c;我们将要学…

北大计算机系统结构学硕,转自包云刚,希望的原野 最近几个月参加了计算所、北大、上海交大多位计算机系统结构硕士与博士的答辩,说几点体会: ① 高水平国际论文越来越多。简单... - 雪球...

来源&#xff1a;雪球App&#xff0c;作者&#xff1a; 逍遥剑99&#xff0c;(https://xueqiu.com/1732900127/153778925)最近几个月参加了计算所、北大、上海交大多位计算机系统结构硕士与博士的答辩&#xff0c;说几点体会&#xff1a;① 高水平国际论文越来越多。简单统计了…

计算机主机箱前后都有什么,目前四种热门的主机机箱设计都有哪些优缺点?

在DIY里面机箱算是最没技术含量的产品之一&#xff0c;不过它却是与DIYer接触时间最长的东西。气味大师每天都会按下机箱开机键&#xff0c;也会空余时间瞄上几眼。机箱确实是对DIY影响最大的产品之一&#xff0c;今天我来盘点一下2018年见过的几个主流机箱设计方案。说是机箱设…