局部变量

普通的局部变量也叫动态变量,默认有个关键字叫auto,可以省略。有两种形式:

1.函数内的局部变量

2.复合语句内的局部变量:for(int i = 0; i<5; i++){…}


静态局部变量只能在函数内定义,如:static int a;

函数外不能用,但每次调用会保留上一次的值


#include <stdio.h>
void buy() {
auto int timesAuto = 1;// 普通局部变量(auto可以省略)
printf("买%d件\n",timesAuto++); static int timesStatic = 1;// 静态局部变量
printf("-----static买%d件\n",timesStatic++);
} main() {
int i;
for(i= 1; i<=5; i++) {
buy();
}
}
买1件
-----static买1件
买1件
-----static买2件
买1件
-----static买3件
买1件
-----static买4件
买1件
-----static买5件

全局变量

普通全局变量:函数外定义,各文件都能使用,无需头文件引入,需extern引入

静态全局变量:函数外定义,自己文件内各函数都可使用,其他文件extern也用不了

f2.c

int a = 1;
// 静态全局变量不能在其他文件中使用
static int b = 2;

main.cpp

#include <stdio.h>

int main(int argc, char** argv) {
extern int a;
printf("全局变量a = %d\n", a);
// 静态全局变量不能在其他文件中使用
// extern int b;
// printf("static全局变量b = %d\n", b);
return 0;
}

同名变量

局部变量会覆盖同名的全局变量。

#include <stdio.h>
int n=1;
main() {
printf("外部变量 n = %d\n",n);
int n=2;
printf("局部变量 n = %d\n", n);
}
外部变量 n = 1
局部变量 n = 2

C语言内存分区

BSS:Block Started by Symbol

C语言讲义——全局变量和局部变量的更多相关文章

  1. 用汇编语言研究C语言的全局变量、局部变量、参数、返回值放在哪里

    前提知识 c0s调用main函数的地址: 11ah main函数的连接地址: 01fah 一.全局变量与局部变量 测试程序 int a1,a2,a3; void f(void); void g(voi ...

  2. C语言之全局变量和局部变量

    全局变量和局部变量的简介(tips:很重要 牢记) 全局变量:就是定义在函数外的变量 全局变量可以在任意函数中使用 生命周期:程序一启动就开辟空间,直到程序退出才回收 全局变量不允许同名 局部变量:就 ...

  3. C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)

    1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局 ...

  4. c语言,全局变量,局部变量,外部函数,内部函数,stasic和extern的复习总结

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  5. c语言全局变量和局部变量问题汇总

    .局部变量是否能和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,须要使用"::" 局部变量能够与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变 ...

  6. c语言全局变量与局部变量(当变量重名时)的使用情况

    在c语言中,变量有全局变量和局部变量之分,这一点和很多高级语言类似,如c#,java等.不过与c#,java中的局部变量如在全局变量作用域内则不允许与全局变量名相同,而c语言是允许这样做的.这样的做法 ...

  7. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  8. JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

    “JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...

  9. 剖析javascript全局变量和局部变量

    首先要记住: javascript是弱类型语言,它只有一种变量类型(var),为变量赋值时会自动判断类型并进行转换. 全局变量和局部变量如何声明? 全局变量声明: 第一种方式(函数外) var a; ...

随机推荐

  1. BAT大佬推荐使用的HTML5的十个功能

    HTML5不是新事物.自从最初发布(2008年1月)以来,我们一直在使用它的一些功能.后来,我再次仔细查看了HTML5功能列表.看到我发现了什么?到目前为止,我还没有真正使用过它! 在本文中,我列出了 ...

  2. MyBatis 原理浅析——基本原理

    前言 MyBatis 是一个被广泛应用的持久化框架.一个简单的使用示例如下所示,先创建会话工厂,然后从会话工厂中打开会话,通过 class 类型和配置生成 Mapper 接口的代理实现,最后使用 Ma ...

  3. JMeter实战(三) 界面使用

    JMeter 有 2 种运行方式,一种是 CLI,一种是 GUI,本篇文章就来介绍一下后者,图形用户界面,因为后续文章大部分都是基于 GUI 的. 本文演示的是英文版,想用中文的同学可以在菜单栏点击 ...

  4. socket http1

    /*****************************************************************///name          : myhttp.h//funct ...

  5. Python list函数

  6. centos 6.5 时间网络同步

    安装 ntpdate sudo yum -y install ntp ntpdate 修改为上海时区 sudo vim /etc/sysconfig/clock ZONE = "Asia/S ...

  7. leetcode 30day--1

    Single Number Given a non-empty array of integers, every element appears twice except for one. Find ...

  8. BlockingQueue中 take、offer、put、add的一些比较

    (转自:https://blog.csdn.net/wei_ya_wen/article/details/19344939 侵删) 在java多线程操作中, BlockingQueue<E> ...

  9. 开发IDE的一些设置

    一.修改和设置idea或eclipse的快捷键: 二.idea的settings的一些设置: settings 可以导出,也可以导入.也可以设置每次新建和新打开一个工程用同一个setting 三.全局 ...

  10. Adaboost算法的一个简单实现——基于《统计学习方法(李航)》第八章

    最近阅读了李航的<统计学习方法(第二版)>,对AdaBoost算法进行了学习. 在第八章的8.1.3小节中,举了一个具体的算法计算实例.美中不足的是书上只给出了数值解,这里用代码将它实现一 ...