一个例子搞懂C语言的局部变量与全局变量

#include <stdio.h>

int x = 77; /*全局变量x*/

void fn1()

{

extern int y; /*使用外部全局变量y,如果不加extern编译不通过*/

printf("fn1(): x=%d,y=%d\n",x,y);  //x=77,y=88;

}

void fn2()

{

extern int y; /*使用外部全局变量y,如果不加extern编译不通过*/

y=888; /*修改外部全局变量y为888*/

printf("fn2(): x=%d,y=%d\n",x,y); //x=77,y=888;

}

int y = 88; /*全局变量y*/

void fn3()

{

printf("fn3(): x=%d,y=%d\n",x,y); //x=77,y=888,y无须使用extern因为y定义在fn3()前面。

}

int main()

{

int x = 10; /*main方法内的局部变量x*/

if(x>0)

{

int x = 100;  /*if语句内的局部变量x*/

x/=2;

printf("if语句内, x=%d\n",x); //x=50;

}

printf("main方法内, x=%d\n",x);//x=10;

fn1();

fn2();

fn3();

getch();

return 0;

}

运行结果:

------------------------------------------

if语句内, x=50

main方法内, x=10

fn1(): x=77,y=88

fn2(): x=77,y=888

fn3(): x=77,y=888

时间: 2024-10-03 14:02:55

一个例子搞懂C语言的局部变量与全局变量的相关文章

一个例子搞懂C++的虚函数和纯虚函数

转自https://blog.csdn.net/vincent040/article/details/78848322,并对代码做了小幅修正,在此感谢原作者. 学习C++的多态性,你必然听过虚函数的概念,你必然知道有关她的种种语法,但你未必了解她为什么要那样做,未必了解她种种行为背后的所思所想.深知你不想在流于表面语法上的蜻蜓点水似是而非,今天我们就一起来揭开挡在你和虚函数(女神)之间的这一层窗户纸. 首先,我们要搞清楚女神的所作所为,即语法规范.然后再去探究她背后的逻辑道理.她的语法说来也不复

一个例子看懂C语言中的++号的用法

话不多说,直接上代码: #include<stdio.h> int main(){ int suzu [10] ={10,11,12,13},i; int *p=suzu; //打印出所有的数据 for(i=0;i<10;i++) printf("%d\n",suzu[i]); //因为*的优先级高于+号 所以这个括号是必须要的 printf("\n"); //因为这个不是按照指针来读取的,所以我们会从默认第一位开始读取 for(i=0;i<

用一个例子读懂 RequireJS

用一个例子读懂 RequireJS 例子来自官方,我稍微改造了一下,如下: // project.html <!DOCTYPE html> <html>     <head>         <title>requirejs</title>         <!-- data-main attribute tells require.js to load              scripts/main.js after require.

一个简单的例子搞懂ES6之Promise

ES5中实现异步的常见方式不外乎以下几种: 1. 回调函数 2. 事件驱动 2. 自定义事件(根本上原理同事件驱动相同) 而ES6中的Promise的出现就使得异步变得非常简单.promise中的异步是这样的: * 每当我需要执行一次异步操作的时候,我都需要new一个promise对象 * 每一个异步操作的Promise对象都需要设定一个成功执行的条件和成功的回调.一个失败的条件和失败的回调 * Promise对象可通过执行then()方法获得成功的回调信息 * Promise对象可通过执行ca

一个例子看懂socket

一个服务端与多个客户端交互的例子 package j2se.socket; import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /**  * Created by jingqing.zhou on 2015/6/17.  * 基于tcp协议的socket通信,实现用户登录  * 服务器端  */ public class server {     

一个例子读懂 JS 异步编程: Callback / Promise / Generator / Async

JS异步编程实践理解 回顾JS异步编程方法的发展,主要有以下几种方式: Callback Promise Generator Async 需求 显示购物车商品列表的页面,用户可以勾选想要删除商品(单选或多选),点击确认删除按钮后,将已勾选的商品清除购物车,页面显示剩余商品. 为了便于本文内容阐述,假设后端没有提供一个批量删除商品的接口,所以对用户选择的商品列表,需要逐个调用删除接口. 用一个定时器代表一次接口请求.那思路就是遍历存放用户已选择商品的id数组,逐个发起删除请求del,待全部删除完成

一个例子看懂神马是闭包

闭包就是这个玩意儿.怎么用在此不做多讲.就告诉大家闭包长神马样子. <!DOCTYPE html> <html> <head> <title>神马JS闭包</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script> function wenyi(){ var i=0; ret

一个例子看懂异步代码执行效率

异步代码采用线程池,提供代码执行的并行性,不阻塞当前线程,实例代码,模拟三个耗时操作,分别耗时为1000.1500.1800ms,提供同步与异步的实现方式,Main中以同步异步的方式执行,对比执行时间,同步执行方式为各个方法的执行时间总和,而异步执行方式为最长的那个时间.ps:实际执行情况可能有其他的一些微不足道开销,但大体能反应异步的执行效率. class OutHelper { public DateTime Method1() { Thread.Sleep(1000); return Da

【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别

局部变量: 创建在栈区(向下生长),生命周期存在于当前作用域中.     创建时若未初始化,则为随机值. 全局变量: 创建在static区,生命周期一直存在. 创建时若未初始化,则为0. 静态局部变量: 切断了外部链接属性.创建在static区. 创建时若未初始化,则为0. 全局变量和静态变量的存储是放在一块的,初始化了的全局变量和静态变量在一块区域,  未初始化的全局变量和未初始化的静态变量在相邻的另一块区域. 全局静态变量: 切断了外部链接属性,创建在static区,生命周期一直存在. 创建