• 局部变量和全局变量


    变程序量中使用的范围不同:作用域(Scope),就是变量的有效范围。变量的作用域取决于变量的访问性。

    局部变量:函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。

    1.主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用。

    2.允许在不同的函数中使用相同的变量名,他们代表不同变量,分配不同的存放单元,互不相干,不会发生混淆。

    3.复合语句中定义的变量,只限于使用当前函数中,也是复合语句的局部变量,复合语句:就是用{}包含起来的语句块。

    4.形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

    #include <stdio.h>

    void m();

    void main(){

    int a=1,b=2;

    {

    int a=3,b=4;

    printf(复合语句的变量a=%d,b=%d ",a,b);

    }

    printf("main函数的变量a=%d,b=%d ",a,b);

    m();

    }

    void m(){

      int a=5,b=6;

       printf("m函数的变量a=%d,b=%d ",a,b);

    }  

    }

    全局变量:在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。它的作用域是从声明时刻开始,到程序结束。

    1.全局变量定义必须在所有函数之外。

    2.全局变量可加强函数模块之间的数据联系,但是函数又依赖这些变量,降低函数的独立性。

    3.在同一源文件中,允许全局变量和局部变量同名,在局部变量作用域内,同名的全局变量不起作用。

    int sum=0;//全局变量

    void addNumbers(){

    int sum;//局部变量

    int num1,num2;

    printf(" 请输入两个数;");

    scanf("%d,%d",&num1,&num2);

    sum=num1+num2;

    }

    void main(){

    int sum=0;//局部变量

    addNumbers();

    printf(" 主函数中 sum 的值是 %d ",sum);

    }

    示例:计算n的阶乘

    #include <stdio.h>

    int fun(int n);

    void main(){

    int n;

    printf("请输入您要计算阶乘的数: ");

    scanf("%d",&n);

    int sum=fun(n);

     printf("%d的阶乘是%d",n,sum);

    }

    //计算阶乘

    int  fun(int n){

    int sum=1;

        while(n>1){

      sum*=n;

      n--;

    }

    return sum;

    }

    //博客评选大赛,10为评为为选手打分,去掉一个最高分和一个最低分,计算选手的最后得分。

    #include <stdio.h>

    void  showMenu();

    void  getScores();

    float calcAvg();

    float scores[10];//定义全局变量,用于保存评委的打分

    void main(){

    float avg;

    showMenu();//1.打印菜单

    getScores();//2.获取评委分

    avg=calcAvg();//计算选手的最后得分

     printf("该选手去掉一个最高分和一个最低分最终得分为%.2f ",avg);

    }

    //1.打印菜单

    void showMenu(){

    printf("************************************************ ");

    printf("*************杯博客大赛******************************** ");

    printf("************************************************ ");

    }

    //获取评委分数

    void getScores(){

    int i;

    for(i=0;i<10;i++){

     printf("%d号评委打分: ",i+1);

       scanf("%f",&scores[i]);//将评委的打分获取并保存到数组中

    }

    printf("评委打分完毕,分数正在紧张统计中..... ");

    }

    //统计去掉一个最高分,一个最低分,选手得分

    float calcAvg(){

    float max,min,avg,sum=0;

    int i;

    min=max=scores[0];//假设第一个分数最高和最低分

    for(i=0;i<10;I++){

    sum+=scores[i];

    if(scores[i]>max){//获取最高分

    max=scoures[i];

    }

    if(scores[i]<min){//获取最低分

    min=scoures[i];

    }

    }

    //去除最高最低计算平均分

    avg=(sum-max-min)/8;

    return avg;

    }

  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/javatask/p/6602392.html
Copyright © 2020-2023  润新知