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" ...
随机推荐
- [RN] React Native 解决 使用 阿里巴巴 矢量图标库 iconfont 图标不垂直居中问题
React Native 解决 使用 阿里巴巴 矢量图标库 iconfont 图标不垂直居中问题 解决方法: 添加 size, line-height ,值为和 height 一样的高度. 例如: ...
- Ubuntu下手动安装vscode
Ubuntu下手动安装vscode1.下载vscodewget https://vscode.cdn.azure.cn/stable/553cfb2c2205db5f15f3ee8395bbd5cf0 ...
- 用Matlab证明三维勾股定理
证明代码: syms a b c ; ab=sqrt(a^+b^); bc=sqrt(c^+b^); ca=sqrt(c^+a^); p=(ab+bc+ca)/; s1=(p*(p-ab)*(p-bc ...
- linux命令之------which命令/cp命令/Head及tail命令/grep命令/pwd命令/cd命令/df命令/mkdir命令/mount及umount命令/ls命令/history命令/ifconfig命令/ping命令/useradd命令/命令passwd/kill命令/su命令/clear命令/ssh命令/tar解压缩/远程拷贝scp
which命令 1) 作用:搜索某个系统命令的位置. 2) 案例:查询vi命令路径:which vi cp命令 1)作用:用于复制文件或目录: 2)-a:此选项通常使用在复制目录时使用,它 ...
- GoCN每日新闻(2019-11-09)
GoCN每日新闻(2019-11-09) 1. Go语言发行10周年庆祝 https://blog.golang.org/10years2. 容器中某Go服务GC停顿经常超过100ms排查 https ...
- GoCN每日新闻(2019-11-08)
GoCN每日新闻(2019-11-08) GoCN每日新闻(2019-11-08) 1. Go Modules: v2及更高版本使用 https://blog.golang.org/v2-go-mod ...
- SpringBoot之KindEditor文件上传
后端核心代码如下: package com.blog.springboot.controller; import java.io.BufferedOutputStream; import java.i ...
- 出现 java.lang.OutOfMemoryError: PermGen space 错误的原因及解决方法
一.原因及解决方法[1] 1.原因:堆内存的永久保存去区内存分配不足(缺省默认为64M),导致内存溢出错误. 2.解决方法:重新分配内存大小,-Xms1024M -Xmx2048M -XX:PermS ...
- 用Eclipse的maven方式创建JFinal项目
- 查找算法(7)--Hash search--哈希查找
1.哈希查找 (1)什么是哈希表(Hash) 我们使用一个下标范围比较大的数组来存储元素.可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用 ...