变量的作用域:有效射程变量

》局部变量

1.在函数中的局部变量,量在该函数结束后自己主动撤销

2.函数内的复合语句中的局部变量(比方for语句),这个变量在复合语句结束后自己主动撤销。这个变量能够与1中的变量重名,在复合语句作用域中里面定义的变量权限更高,考虑到可读性不推荐这么做

比如:

#include<stdio.h>
#include<stdlib.h>
void fun1();
int main()
{
fun1();
} void fun1()
{
int m=200;
int i=0;
for(i=0;i<1;i++)
{
int m=5;
printf("%d",m);
}
printf("%d\n",m);
system("pause");
} //输出结果为:5 200

》全局变量

定义在全部函数外部的变量,须要注意和区分的是变量的定义和声明。仅仅要在全部函数外面定义的变量就是全局变量 ,所以这个变量不一定在一个文件的最前面几行代码,假设这个变量定义在一个函数的后面。而这个函数须要用到这个变量,那么这个变量就需在这个函数之前声明或者在这个函数内部声明方可使用,假设这个变量定在这个函数的前面,那么能够省去声明。

定义一个变量的一般形式:extern  类型说明符  变量名    (比方:int a  ,在定义的时候extern能够省略。)

声明一个变量的一般形式:extern  类型说明符  变量名    (声明变量时extern不能够省略,)

变量的储存方式:储存方式决定了函数的生存期

》静态储存

能够用keyword  static(描写叙述静态变量)  extern(描写叙述外部变量)  来定义一个'静态储存的变量‘,注意引號之间的措词,也就是说静态变量是採用静态储存方式,而全局变量也是採用静态储存方式,静态变量和静态储存不是一个意思

·
静态变量一直存在,在预编阶段分配了内存空间,直到整个程序结束才销毁

》动态储存

能够用keyword auto(描写叙述自己主动变量,假设定义一个变量不写描写叙述符那么就是默认的auto)  register(描写叙述寄存器变量) 来定义一个动态储存的变量。

动态变量在该函数或该复合语句開始运行时分配,结束时自己主动清除内存

比如:函数的形參,在定义函数时并不分配内存,仅仅有在调用时分配。调用结束后自己主动释放内存
复合语句也一个道理

静态变量之全局和局部

》静态局部变量

静态局部变量在函数内定义。他的生存周期为整个程序运行期间,可是其作用域任然与自己主动变量同样,仅仅能在定义该变量的函数内使用该变量,函数调用结束后虽然该变量还继续存在,但不能直接訪问它,假设在整个程序运行期间再次调用定义它的那个函数,在这个函数内可继续使用这个变量,变量的值为上次函数调用完时的状态。这一点非常实用。当然所有变量也能够实现一样的效果,可是easy产生副作用。

》静态全局变量

这个在程序运行期间一直有效,

须要注意的是    静态全局变量  和非静态全局变量(全局变量)

一个程序往往有非常多源码。一个源文件里包括了另外一个源码文件,

总结来说就是:全局变量在全部包括了它的源文件里均有效,而静态全局变量仅仅有在定义它的源文件里有效,

总的结论:经过局部变量,而不是静态变量改变其存储,这改变了它的生命周期;经过全局变量静态变量改变其范围。限制其范围

C类型和存储方式的语言变量的更多相关文章

  1. 二进制、十六进制理解及int类型二进制存储方式

    二进制 0000 0000 0000 0000 0000 0000 0000 0001 // 2^0 0000 0000 0000 0000 0000 0000 0000 0010 // 2^1 00 ...

  2. Android的资源类型和存储方式简介-android学习之旅(五十二)

    android资源的类型 android资源的存储方式

  3. float和double类型的存储方式

    Float double 类型在计算机的存储方式 计算机中只认识10的二进制数,那么该如何存储小数呢? 那么我们先看Floa类型: Float在计算机(32位)中是4个字节的,具体地:第一位为符号位0 ...

  4. OpenStack 虚拟机的磁盘文件类型与存储方式

    目录 文章目录 目录 虚拟机的磁盘文件类型 虚拟机磁盘文件的存放方式 QCOW2 镜像格式与 qemu-img 指令 参考文章 虚拟机的磁盘文件类型 Nova 虚拟机的虚拟磁盘主要包含有 Root D ...

  5. iOS开发系列--C语言之存储方式和作用域

    概述 基本上每种语言都要讨论这个话题,C语言也不例外,因为只有你完全了解每个变量或函数存储方式.作用范围和销毁时间才可能正确的使用这门语言.今天将着重介绍C语言中变量作用范围.存储方式.生命周期.作用 ...

  6. C语言---变量与函数

    一个C程序是由一个或多个程序模块组成的,每一个程序模块作为一个源程序文件,一个源程序文件是一个编译单元. 源程序文件分为库函数和用户自己定义的函数,以及有参函数.无参函数. 函数调用的过程: 1) 定 ...

  7. .NET C#教程初级篇 1-1 基本数据类型及其存储方式

    .NET C# 教程初级篇 1-1 基本数据类型及其存储方式 全文目录 (博客园).NET Core Guide (Github).NET Core Guide 本节内容是对于C#基础类型的存储方式以 ...

  8. C语言变量、函数的作用域及变量的存储方式

    一.变量的作用域和存储方式 在C语言中每个变量都有两种基本属性:数据类型.数据的存储类别. 数据类型很多人都已熟知,例如:字符型(char).整型(int).浮点型(float)等等.存储类别是指数据 ...

  9. C语言学习笔记:12_变量的存储方式和生存期

    /* * 12_变量的存储方式和生存期.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include ...

随机推荐

  1. FOJ (FZU) 1476 矩形的个数 排列组合。

    http://acm.fzu.edu.cn/problem.php?pid=1476  Problem Description 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1* ...

  2. iOS开发之Quarz2D:九:图形上下文矩阵操作

    #import "VCView.h" @implementation VCView - (void)drawRect:(CGRect)rect { // Drawing code ...

  3. 关于LayoutParams 分类: H1_ANDROID 2013-10-27 20:34 776人阅读 评论(0) 收藏

    每一个布局均有一个叫LayoutParams的内部类,如: LinearLayout.LayoutParams  RelativeLayout.LayoutParams  AbsoluteLayout ...

  4. 想要搞BGM,没有歌曲链接怎么办?

    有对于想要做个个人网站BGM,而非商业用途和非法用途,这只是个小技巧,仅限于个人娱乐使用. 方法一: 首先打开酷狗网页端 搜索想要的音乐名字 进入播放页面 进入开发者模式(右键鼠标->检查或者直 ...

  5. jquery zoom jquery放大镜特效

    这是一款非常不错的给图片添加放大镜效果,可以应用在诸如zen cart,magento电子商场之类的开源项目上.如果想看它的效果,你可以直接访问: http://www.mind-projects.i ...

  6. 如何编辑SDE数据库(转载)

    转自原文 如何编辑SDE数据库(转载) 如何编辑SDE数据(转自ESRI中国社区) (2008-12-15 17:26:41) 很多刚入门的朋友对SDE数据并不太了解,接二连三的在社区里面发问,有时也 ...

  7. iOS开发之Quartz2D 二:绘制直线,曲线,圆弧,矩形,椭圆,圆

    #import "DrawView.h" @implementation DrawView /** * 作用:专门用来绘图 * 什么时候调用:当View显示的时候调用 * @par ...

  8. 【u209】轰炸

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 小y是苏联的总书记. 苏联有n个城市,某些城市之间修筑了公路.任意两个城市都可以通过公路直接或者间接到 ...

  9. 学习鸟哥的Linux私房菜笔记(6)——过滤器、输入输出及管道

    一.过滤器 Linux中的应用工具分为三种: 交互工具 过滤器 编辑器 能够接受数据,过滤再输出的工具,称之为过滤器 对过滤器和进程,存在着输入源与输出对象 二.输入.输出.重定向 输入:过滤器的数据 ...

  10. WPF 在绘图控件(Shape)中添加文字 [2018.7.15]

    原文:WPF 在绘图控件(Shape)中添加文字 [2018.7.15] Q:使用Shape的子类Ellipse画一个圆,如何在圆中添加文字? A:Shape类中不包含Text属性.可使用Shape类 ...