2018-5-9
Writen By Stephen.Yu 

一、定义

1. 局部变量:在函数中定义的变量

2. 全局变量:在所有函数体之外定义

定义(Definition):声明并分配内存;未分配内存则只是声明(declaration)

二、局部变量&全局变量

1.某个函数中定义的变量不能被另一个函数使用

void time(int hour, int minute)
{
printf("%d:%d\n", hour, minute);
}
int main(void)
{
int hour=23, minute=59;
time(hour, minute);
return 0;
}

如上,main函数中定义了局部变量hour和minute,time函数中也有,虽然他们名称相同,但却是不同的变量,代表着不同的存储空间,只是恰好存储了相同的值。

如上,相同的值,但存储空间完全不同。

2.每次调用函数时,局部变量都表示不同的存储空间。

局部变量在每次函数调用时分配存储空间,在函数返回时释放存储空间。

#include<stdio.h>

int hour=23, minute=59;
int x=10; void time(void)
{
printf("%d:%d\n",hour, minute);
} int main(void)
{
int hour=0, minute=30;
time();
printf("%d:%d in main\n",hour, minute);
printf("x=%d\n",x);
time();
return 0;
}

执行结果如图

在所有函数体之前定义的hour,minute的值进入了time函数,而当main函数再次对hour,minute定义时,其值将全局变量的值覆盖。

然而,局部变量中没有定义的x的值仍然是10。当我们再次执行time函数,hour和minute的值又回到了全局变量。

3.局部变量可以用任意类型相符的表达式来初始化,而全局变量只能用常量表达式初始化。

全局变量的初始值要求保存在编译生成的目标代码中,因此必须在编译时就能计算出来。例如int hour=minute/60;这样的初始化时不合法的。

4.如果全局变量在定义时不初始化,则初始值就是0(int为0;char为'0';float为0.0)

如果局部变量在定义时不初始化,则初始值是不确定的

#include <stdio.h>

int foo(void)
{
int i;
printf("%d\n",i);
i=777;
} int main(void)
{
foo();
printf("再执行一次foo会得到什么呢?\n");
foo();
return 0;
}

事实上,很有可能每一次运行的结果都是不一样的。

C_局部变量&全局变量的更多相关文章

  1. iOS 局部变量 全局变量 成员变量

    一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...

  2. c语言局部变量 静态局部变量 全局变量与静态全局变量

    基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...

  3. day10 局部变量 全局变量 作用域前奏

    规则命名以及基本介绍 name="LHF" # 顶头写的全局都可以调用的就是全局变量,命名规则要求大写全局变量 def chang_name(): # global name # ...

  4. day 3 局部变量 全局变量

    1.局部变量 2.全局变量(死歌的大招)函数前面声明的都是全局变量 3.全局变量和局部变量的区别 1)老方法 def get_temper(): temper = 33 return temper d ...

  5. SQL 视图 局部变量 全局变量 条件语句 事务 触发器

    一.视图 1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作. 2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量 ...

  6. python基础:局部变量--全局变量的使用

    局部变量: 使用原则:仅在本函数内部使用的变量,其他函数无法使用本函数的变量 代码: def function1(): a = 2 #定义一个局部变量 print(a) def function2() ...

  7. python基础 — 局部变量/全局变量

    变量作用区域 变量器作用的额代码范围称为变量的作用与,不同作用区域之间互不影响,函数每部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量.所以我们在这里按变量的作用区域分为两类,全局变量 ...

  8. 【学习笔记】Shell-1 变量:命名规范、变量赋值/取值/取消、局部变量/全局变量、预设环境变量

    1.Shell变量 从变量的实质上来说,变量名是指向一片用于存储数据的内存空间. Shell变量是一种弱类型的变量,即声明变量时不需要指定其变量类型,也不需求遵循“先声明再使用”的规定,想用即可用. ...

  9. JavaScript this 局部变量全局变量 作用域 作用域链 闭包

    从阮老师博客的一道测试题说起: 代码段一: var name = "The Window"; var object = { name : "My Object" ...

随机推荐

  1. mac下 Eclipse代码自动补齐 设置

    Eclipse -> Perferences -> Java -> Editor -> Content Assist如下图. 将auto activation triggers ...

  2. TDD(测试驱动开发)

    什么是 TDDTDD 有广义和狭义之分,常说的是狭义的 TDD,也就是 UTDD(Unit Test Driven Development).广义的 TDD 是 ATDD(Acceptance Tes ...

  3. mysql(四)缓存

    参考文档: http://www.cnblogs.com/zemliu/archive/2013/08/03/3234372.html

  4. Maven编译中使用${env}与直接启动tomcat会报错的问题处理

    Maven编译中使用${env}与直接启动tomcat会报错的问题处理 在Run/Debug Configurations中,设置 Before lauch:Build, Build Artifact ...

  5. numpy的文件存储.npy .npz 文件详解

    Numpy能够读写磁盘上的文本数据或二进制数据. 将数组以二进制格式保存到磁盘 np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 ...

  6. TX-LCN5.0.2分布式事务框架源码分析-关键线索罗列-txc部分

    1.注解TxcTransaction2.在其注解接口附近查找aop配置:TransactionAspect3.runTransaction是在执行事务业务代码时的包装逻辑4.transactionSe ...

  7. 将本地文件夹添加到git仓库

    1.git init; 2.git add . 3.git commit -m "初始化" 4.git remote add origin https://github.com/g ...

  8. java合并多个word 2007 文档 基于docx4j

    参考文章:http://dh.swzhinan.com/post/185.html 引入的jar包 <dependency> <groupId>org.docx4j</g ...

  9. Java13新特性 -- switch表达式

    引入了yield语句,用于返回值: 和return的区别在于:return会直接跳出当前循环或者方法,而yield只会跳出当前switch块. @Test public void testSwitch ...

  10. 【GMT43智能液晶模块】例程二十二:USB_HID实验——双向数据传输

    源代码下载链接: 链接:https://pan.baidu.com/s/1iSAUQnHoLI3WRPm-DimeSA 提取码:69vp 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...