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

》局部变量

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. Android自定义组件系列【9】——Canvas绘制折线图

    有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了很多插件,但是很多时候我们需要根据具体项目自定义这些图表,这一篇文章我们一起来看看如何在Android中使用Canvas ...

  2. [Now] Deploy a Node project with Zeit’s Now

    Use Zeit’s now to deploy a node application from your local machine to a remote cloud service in mom ...

  3. ssion机制详解

    ssion机制详解   ref:http://justsee.iteye.com/blog/1570652 虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚sess ...

  4. Android 输入框弹出样式

    在androidMainfest.xml文件里 在Activity中设置 [A]stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 [B]stateU ...

  5. Android JNI编程(一)——JNI概念以及C语言Dev-C++开发环境搭建、编写HelloWorld

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:JNI是什么呢? JNI:JNI是JavaNative Interfac ...

  6. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(7)结构体

    一.为什么需要结构体? 为了表示一些复杂的事物,而普通类型无法满足实际需求 二.什么叫结构体? 把一些基本类型组合在一起形成的一个新的复合数据类型叫做结构体. 三.如何定义一个结构体? 第一种方式: ...

  7. Ajax基础与Json应用(一)

    一.Ajax概念 Ajax是异步的javacript和xml 发音: Ajax [ˈeɪˌdʒæks] 二.同步与异步 传统方式(同步):一个请求对应一个回应,他们是同步的,回应不完成,没办法对这个页 ...

  8. Mina框架项目运用

    近期最一个项目对通信要求比較严格,须要建立长连接,且能处理多并发,所以选择了Mina框架.以下就简单记录开发的过程吧: mina 开发须要的jar包: mina pc端通信: 服务端: package ...

  9. Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题

    Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应 ...

  10. 物理引擎UIDynamic

    nUIDynamic   n什么是UIDynamic pUIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 p可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ü重力. ...