zoukankan      html  css  js  c++  java
  • 局部变量与全局变量

    1、局部变量

    在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用他们,在此函数以外是不能使用这些变量的。这称为“局部变量”。

    例:float f1(int a)/*函数f1*/

      {

        int b,c;  /*a,b,c有效*/

      }

      char f2(int x,int y) /*函数f2*/

      {

        int i, j;   /*x,y,i,j有效*/

      }

    说明:(1)主函数定义的变量也只在主函数中有效,主函数也不能使用其他函数中定义的变量。

    (2)不同函数中可以使用相同函数的变量,它们代表不同的对象,互不干扰。

    (3)形式参数也是局部变量。

    (4)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    
    void main()
    {
        int a,b;
        {
            int c;
            c=a+b;
        }
    }
        

    2、全局变量

    在函数内定义的变量是局部变量,而在函数外定义的变量称为外部变量,外部变量是全局变量(也称全程变量)。

    全局变量可以为本文件中其他函数所共用。它的有效范围从定义变量的位置开始到本文件结束。

    例:

    #include <stdafx.h>
    #include<stdio.h>
    
    int p=1,q=5;  /*外部变量*/
    float f1(int a)  /*定义函数f1*/
    {
        int b,c;    
    }
    char c1,c2;    /*外部变量*/
    char f2(int x,int y)    /*定义函数f2*/
    {
        int i,j;
    }
    void main()    /*主函数*/
    {
        int m,n;
    }
        

    例:输入正方体的长宽高l,w,h。求体积及三个面的面积。

    #include <stdafx.h>
    #include<stdio.h>
    
    int s1,s2,s3;
    int vs(int a,int b,int c)
    {
        int v;
        v=a*b*c;
        s1=a*b;
        s2=b*c;
        s3=a*c;
        return (v);
    }
    void main()
    {
        int v,l,w,h;
        printf("
     input l,w,h
    ");
        scanf("%d%d%d",&l,&w,&h);
        v=vs(l,w,h);
        printf("
     v=%d,s1=%d,s2=%d,s3=%d
    ",v,s1,s2,s3);
    }
        

    例:有一个一维数组,内放十个学生成绩,写一个函数,求出平均分,最高分和最低分。

    #include <stdafx.h>
    #include<stdio.h>
    
    float max=0,min=0;
    void main()
    {
        float average(float array[],int n);
        float ave,score [10];
        int i;
        for(i=0;i<10;i++)
        {
            scanf("%f",&score[i]);
        }
        ave=average(score,10);
        printf("max=%6f
    min=%6f
    average=%6f
    ",max,min,ave);
    }
    float average(float array[],int n)
    {
        int i;
        float aver,sum=array[0];
        max=min=array[0];
        for(i=1;i<10;i++)
        {
            if(array[i]>max)
            {
                max=array[i];
            }
            else if(array[i]<min)
            {
                min=array[i];
            }
            sum+=array[i];
        }
        aver=sum/n;
        return(aver);
    }

    不建议使用全局变量:

    原因:(1)全局变量在程序的全部执行过程中都占用储存单元,而不是仅在需要时才开辟单元。

    (2)使用全局变量过多,会降低程序的清晰性。

    (3)使函数的通用性降低了。

  • 相关阅读:
    margin折叠及hasLayout && Block Formatting Contexts
    视口(viewport)原理详解之第二部分(移动端浏览器)
    Git & SSH
    .NET Core 3.0 System.Text.Json 和 Newtonsoft.Json 行为不一致问题及解决办法
    阿里云函数计算 .NET Core 初体验
    Oracle PLSQL 存储过程无法进入单步调试
    解释器错误:没有那个文件或目录
    不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。
    Oracle 11G R2 安装图解
    Oracle UTL_HTTP
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10349248.html
Copyright © 2011-2022 走看看