鱼C论坛

 找回密码
 立即注册
查看: 339|回复: 0

[学习笔记] 每日一学15

[复制链接]
发表于 2024-12-11 16:16:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
变量的存储类别2

外部类型(extern)
在任何函数之外定义的变量都叫作外部变量。外部变量通常用关键字extern说明。
其一般形式为:

extern 类型 变量名;

在一个文件中定义的全局变量默认为外部的,即extern关键字可以省略。但是如果其他文件要使用这个文件中定义的全局变量,则必须在使用前用"extern"作外部声明,外部声明通常放在文件的开头。

外部变量示例。

  1. //文件1"file1.c"
  2. #include<stdio.h>

  3. extern int a;       //外部变量a

  4. extern int sum(int x);

  5. void main()
  6. {
  7.     int c;

  8.     c=sum(a);

  9.     printf("1+2+...+%d=%d\n",a,c);
  10. }

  11. //文件2"file2.c"
  12. #include<stdio.h>

  13. int a=20;       //全局变量a

  14. int sum(int x)
  15. {
  16.     int i,y=0;

  17.     for(i=1;i<=x;i++)
  18.     {
  19.         y=y+i;
  20.     }
  21.     return y;
  22. }
复制代码


例题分析:
本范例file2.c文件中定义的1个全局变量,其作用域可以延伸到其他文件中,即其他文件也可以使用这个变量,但是在使用前用”extern“作外部声明。
file1文件使用了file2文件中的变量a,就要在前面加上extern声明,一般放在文件的开头。另外引用的sum()子函数也是第1个文件,也作了一个外部声明。


综合应用——日期判断
编写程序,给出年、月、日,计算该日是该年的第几天。

  1. //文件1 control.c

  2. #include<stdio.h>

  3. extern int days();              //定义外部函数

  4. //extern
  5. int year,month,day;      //外部变量

  6. void main()
  7. {
  8.     printf("输入年、月、日:\n");

  9.     scanf("%d%d%d",&year,&month,&day);

  10.     printf("%d月%d日是%d年的第%d天\n",month,day,year,days());+

  11. }


  12. //文件2 day.c
  13. int year,month,day;         //定义全局变量

  14. int days()
  15. {
  16.     int i,count=0;          //count记录天数

  17.     int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};  //用一维数组记录每个月的天数

  18.     if((year%100)&&!(year%4)||!(year%400))      //如果此年为闰年,将二月份的天数改为29天

  19.         a[2]=29;

  20.     for(i=0;i<month;i++)        //累加该日期前面几个月份的天数

  21.         count+=a[i];

  22.     count=count+day;        //再加上该日期在本月份中的天数

  23.     return count;
  24. }
复制代码


例题分析:
本例题中,要计算天数,首先必须知道每个月有多少天,这里使用一维数组记录一年当中每个月的天数,数组下标与年份吻合。另外,还要知道要计算的日期所在的年份是否是闰年,所以用if((year%100)&&!(year%4)||!(year%400))计算闰年,如果是闰年,将下表为2的元素改为29,否则不发生变化.这样就可以进行天数相加,先加前面几个月份的天数和,再于该日期中的day相加即可。本例题在day.c源文件中采用了全局变量存放年、月、日,并在另一个文件中使用了这3个外部变量和外部函数days()。


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-13 23:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表