C_局部变量&全局变量
一、定义
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_局部变量&全局变量的更多相关文章
- iOS 局部变量 全局变量 成员变量
一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...
- c语言局部变量 静态局部变量 全局变量与静态全局变量
基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...
- day10 局部变量 全局变量 作用域前奏
规则命名以及基本介绍 name="LHF" # 顶头写的全局都可以调用的就是全局变量,命名规则要求大写全局变量 def chang_name(): # global name # ...
- day 3 局部变量 全局变量
1.局部变量 2.全局变量(死歌的大招)函数前面声明的都是全局变量 3.全局变量和局部变量的区别 1)老方法 def get_temper(): temper = 33 return temper d ...
- SQL 视图 局部变量 全局变量 条件语句 事务 触发器
一.视图 1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作. 2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量 ...
- python基础:局部变量--全局变量的使用
局部变量: 使用原则:仅在本函数内部使用的变量,其他函数无法使用本函数的变量 代码: def function1(): a = 2 #定义一个局部变量 print(a) def function2() ...
- python基础 — 局部变量/全局变量
变量作用区域 变量器作用的额代码范围称为变量的作用与,不同作用区域之间互不影响,函数每部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量.所以我们在这里按变量的作用区域分为两类,全局变量 ...
- 【学习笔记】Shell-1 变量:命名规范、变量赋值/取值/取消、局部变量/全局变量、预设环境变量
1.Shell变量 从变量的实质上来说,变量名是指向一片用于存储数据的内存空间. Shell变量是一种弱类型的变量,即声明变量时不需要指定其变量类型,也不需求遵循“先声明再使用”的规定,想用即可用. ...
- JavaScript this 局部变量全局变量 作用域 作用域链 闭包
从阮老师博客的一道测试题说起: 代码段一: var name = "The Window"; var object = { name : "My Object" ...
随机推荐
- roughViz 一个可重用,功能强大的手绘图表组件
前段时间介绍过一个chart.xkcd 的手绘图表组件,roughViz 是另外一个,同时也提供了 比较多的图表类型,api 参考文档也比较全 支持的图表类型 Bar Horizontal Bar D ...
- fpm 打包跨平台rpm 包的一个问题
平时我们开发机器可能使用的是mac 系统,但是部署机器kennel是linux,默认会有一个操作系统的问题, 我们可以在打包的时候指定os版本信息 参考 --rpm-os linux 参考例子 一个构 ...
- 微信小程序 自定义导航组件 nav头部 全面屏设计
nav-dynamic 微信小程序自定义nav头部组件:适配全面屏设计: 实现功能 初始进入页面时,展示初始状态下的nav样式: 页面滚动时,监听页面滚动事件,展示滚动状态下的nav样式: 根据配置字 ...
- BZOJ2151/洛谷P1792 题解
若想要深入学习反悔贪心,传送门. Description: 有 \(n\) 个位置,每个位置有一个价值.有 \(m\) 个树苗,将这些树苗种在这些位置上,相邻位置不能都种.求可以得到的最大值或无解信息 ...
- SpringCloud:gateway网关模块启动报错
1.错误信息 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with na ...
- Mongoose 入门以及实现数据的增、删、改、查
mongoose 介绍 Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具.Mongoose 是 NodeJS 的驱动,不能作为其他语言的驱动. Mong ...
- Python-DDT框架
Install pip install ddt 实例 import unittest from ddt import ddt, data, unpack @ddt class MyTestCase(u ...
- 分布式系统之CAP原理
参考链接:http://blog.csdn.net/wireless_com/article/details/79153643 CAP是什么? CAP理论,被戏称为[帽子理论].CAP理论由Eric ...
- HTML5的服务器EventSource(server-sent event)发送事件
参考资料: HTML5的服务器(server-sent event)发送事件有什么应用场景? W3school HTML 5 服务器发送事件 『后台消息推送功能』,前端除了轮询.scoket.第三方服 ...
- .net framework msbuild环境搭建 (不装vs)
1. 安装 .net framework sdk 小于等于 .net framework 4.5 版本的 .net framework sdk 通过 windows sdk 工具安装 从下面额链接找到 ...