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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值