C语言中将外部变量的作用域扩展到其他文件

1.外部变量的定义
外部变量是在函数的外部定义的全局变量。全局变量都是存放在静态存储区中,因而它的生存期是固定的,存在于程序的整个运行过程。
2.外部变量的作用域扩展
但外部变量有一个重要问题,就是作用域的设置和扩展。其中扩展作用域,对于模块化程序设计至关重要。
一个C程序可以由一个或多个源程序文件组成。(a)如果程序只由一个源文件组成,使用外部变量的方法是通过关键字extern实现外部变量的作用域的扩展。(b)如果程序由多个文件组成时,拓展外部变量的方法是在被扩展的文件程序的开头用“extern 被扩展的外部变量”。
3.举例
例如:包含两个文件的c源程序,给定A1的值,输入b和m,求a*b和A1^m ,实现程序如下:
文件1源程序: file1.c


#include <stdio.h>
int A1;
int main()
{int power(int b,int m);int b=21,c,d,m;printf("please enter the number A1 and its power m:\n");scanf("%d,%d",&A1,&m);c=A1*b;printf("%d*%d=%d\n",A1,b,c);d=power(A1,m);printf("%d^%d=%d\n",A1,m,d);return 0;
}

文件2源程序:file2.c

// 子函数power
extern A1;
int power(int A1,int n)
{int i,y=1;for(i=1;i<=n;i++)y*=A1;return(y);}

4.运行结果

C语言中将外部变量的作用域扩展到其他文件相关推荐

  1. c语言中外部变量的使用方法,C语言外部变量的使用以及erxtern的用法

    网上有很多帖子问C语言中extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉. 变量定义性声明和引用性声明 变量的声明有两种 ...

  2. go语言中的变量与作用域

    package mainimport ("fmt""math/rand" )var era = "AD"func main(){// 变量的 ...

  3. C语言定义外部变量或函数使得另一个C文件可以调用

    比如要在b.c想要调用a.c里的变量aa或函数aaa,则需要将a.c里的变量aa和函数aaa设置为外部变量和函数 方法: 在a.h中声明aa变量和aaa函数: extern int aa;extern ...

  4. c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...

    谭浩强书: 从存储模型可以看到,谭浩强和钱能的模型有一定的对应关系: 静态存储区  ->  全局数据区 动态存储区  ->  栈(stack) 变量的类型: 1. 局部变量和全局变量 局部 ...

  5. linux声明语言变量,C语言中用extern声明外部变量

    2. 在多文件的程序中声明外部变量 如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量num,不能分别在两个文件中各自定义一个外部变量num.正确的做法是:在任一个文件中定义外部变量num, ...

  6. Win32 C 语言程序编译多个文件和在多个文件中声明外部变量

    先看一下程序的运行结果:Win32程序,没窗口:只有WinMain入口: 工程如下:main.c使用了a.c.b.c.d.c中的函数: main.c: #include <windows.h&g ...

  7. c语言打开外部doc文件,C语言-内部函和外部函数.doc

    C语言-内部函和外部函数 8.10 内部函数和外部函数?函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数. 8.10 ...

  8. c语言 引用定义变量,如何在c语言中定义及引用全局变量?

    如何在c语言中定义及引用全局变量? 答案:5  信息版本:手机版 解决时间 2019-10-03 10:30 已解决 2019-10-02 15:19 如何在c语言中定义及引用全局变量? 最佳答案 2 ...

  9. c语言函数变量的作用域与生存期

    目录 一.作用域与生存期的概念 1.变量的作用域 2.变量的生存期 二.全局变量与局部变量 1.局部变量的作用域与生存期 2.全局变量的作用域与生存期 一.作用域与生存期的概念 1.变量的作用域 在c ...

最新文章

  1. 【CTF】实验吧 robomunication
  2. Visual Studio找不到iOS模拟器
  3. 关于BP神经网络的大牛的论述
  4. fatal error C1001的一个解决心得
  5. 写给程序员的美术创作指南
  6. c 字符串转数字_C语言实现十进制转216进制、十六进制转十进制
  7. 前端学习(1703):前端系列javascript之问题解答
  8. ACM算法--spfa算法--最短路算法
  9. 在'for'循环中获取索引
  10. 【转】C# 控件的自定义拖动、改变大小方法
  11. 三菱PLC自带FIFO操作指令编程应用
  12. w7系统关闭打印服务器,w7打印后台处理程序服务总是自动停止如何解决【照片】...
  13. 固态硬盘打开计算机就死机,SSD死机卡顿怎么办 固态硬盘使用详解
  14. 慧都与数据库厂商Devart进一步提升合作层次
  15. java监听剪贴板_Java监视系统剪贴板
  16. C语言程序——输入三角形的边长求面积
  17. shell 中的括号(小括号,花括号)
  18. 黄河科技学院计算机等级考试成绩查询,全国计算机等级考试成绩查询汇总
  19. coward的个人简介
  20. 北京大学百年讲堂内听果宁法师讲人生——提得起、放得下的深刻含义(摘抄)

热门文章

  1. 【开播3.5小时,观看近5万人,3天销量第一】2021企业数字化转型落地高峰论坛暨《数字化转型方法论》新书发布会大获成功
  2. 卷积滤波 英文_图像的卷积(滤波)运算(二)——高斯滤波
  3. 视频博主都在用的 音频素材网,免费还可商用
  4. 折磨人小游戏之《一个都不能死》html5网页小游戏源代码
  5. 使用cubemx工具的STM32对外部flash(W25Q64)的简单编程
  6. 5V升压12.6V电路图芯片,给三节锂电池充电
  7. 精心整理Webpack7分钟极速回忆录
  8. 【自控原理】第三章 线性系统的时域分析法
  9. rtsp_client 拉取海康摄像头的视频流
  10. pytorch图像分类篇:6. ResNet网络结构详解与迁移学习简介