当前位置: 首页 > news >正文

C38-全局变量、局部变量及外部变量

一 全局变量

  • 定义:在函数外部声明的变量,属于整个程序的"全局范围"
  • 作用域:从声明位置到文件末尾
  • 跨函数访问:无需传递参数,其后的任意函数可直接使用

二 局部变量

  • 定义:在函数内或代码块({})中声明的变量,作用域仅限于所在函数或代码块
  • 特点:
    • 作用域有限
    • 内存动态分配:存在栈区,函数调用时创建,结束后自动释放内存
    • 默认值不确定:未初始化时值为随机数(垃圾值),需手动赋值.

三 外部变量

  • 本质:通过extern声明其它文件中已定义的全局变量,实现跨文件共享
  • 声明:需要用extern(不分配内存,仅引用),依赖全局变量定义
  • 注意:全局变量只能在一个文件中定义,其它文件用extern声明

四 全局变量实战开发

  • 题目:班上有10个学生,封装一个函数,调用该函后获得班上的平均分、最高分、最低分
  • 代码示例
#include <stdio.h>//定义全局变量
int MaxScore;
int MinScore;//封装函数
float GetResult(int arr[],int len)
{int i;int SumScores=0;MaxScore=MinScore=arr[0];for(i=0;i<len;i++){if(MaxScore<arr[i]){MaxScore=arr[i];}if (MinScore>arr[i]){MinScore=arr[i];}SumScores+=arr[i];}return (float)SumScores/len;
}//主函数
int main()
{int scores[10]={88,72,95,68,70,77,91,63,89,76};float AvgScore;AvgScore=GetResult(scores,sizeof(scores)/sizeof(scores[0]));printf("该班级的平均分是:%.2f\n最高分是:%d\nz最低分是:%d",AvgScore,MaxScore,MinScore);return 0;
}
  • 输出结果

image-20250512152104902

  • 报错总结

image-20250512151706925

这两种初始化方法都是错误的,第一种会使最小值为0;第二种会使总分多加了arr[0],从而使平均值增大;

正确的应该这样:

image-20250512152031072

相关文章:

  • 吴恩达机器学习笔记:单变量线性回归
  • 机器学习驱动的智能化电池管理技术与应用
  • 《Python星球日记》 第59天:生成对抗网络(GAN)
  • 《算法导论(第4版)》阅读笔记:p32-p38
  • USB学习【10】描述符-HID描述符
  • 42、在.NET 中能够将⾮静态的⽅法覆写成静态⽅法吗?
  • Java 内存模型(JMM)与内存屏障:原理、实践与性能权衡
  • RabbitMQ高并发秒杀、抢购系统、预约系统底层实现逻辑
  • 自然语言处理(NLP)在影评情感分析中的处理流程示例
  • web 自动化之 Unittest 应用:测试报告装饰器断言
  • 继承关系下创建对象的具体流程
  • (十三)Java注解(Annotation)全面解析:从基础到高级应用
  • set常用接口及模拟实现
  • Kubernetes控制平面组件:Kubelet详解(二):核心功能层
  • Linux系统编程(八)--进程间通信
  • 邮件营销应对高退信率的策略
  • C语言| 局部变量、全局变量
  • Linux 详解inode
  • 各类大豆相关数据集大合集
  • 大模型的Lora如何训练?
  • 教育类网站开发费用/南京百度seo公司
  • 18款禁止未成年软件app/seo顾问服
  • 专业服务网站开发/如何让百度搜索排名靠前
  • 互利互通网站建设/成都网站建设软件
  • 网站开发用户登录前 登录后/百度词条
  • 廊坊公司网站建设/韩国比分预测