zoukankan      html  css  js  c++  java
  • 关于全局变量

    全局变量是在整个文件里面可以供其他函数调用的变量。是不用当做变量传进函数里面的,直接调用就可以了!

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int a100=0,a50=0,a20=0,a10=0,a5=0,a1=0;
    void digui(int n);
    
    int main(void)
    {
        int n;
        cin>>n;
        digui(n);
        //cout<<"cout"<<a100<<endl;
        printf("%d
    %d
    %d
    %d
    %d
    %d",a100,a50,a20,a10,a5,a1);
    }
    
    
    void digui(int n)
    {
        if(n-100>=0) {n=n-100;a100++;digui(n);}
        else if(n-50>=0) {n=n-50;a50++;digui(n);}
        else if(n-20>=0) {n=n-20;a20++;digui(n);}
        else if(n-10>=0) {n=n-10;a10++;digui(n);}
        else if(n-5>=0) {n=n-5;a5++;digui(n);}
        else if(n-1>=0) {n=n-1;a1++;digui(n);}
    
    }

    上面这个代码是http://noi.openjudge.cn/ch0113/13/,13:人民币支付问题的AC代码。这里就是容易犯这个错误,如果代码改成下面这样:

    void digui(int n,int a100,int a50,int a20,int a10,int a5,int a1)
    {
        if(n-100>=0) {n=n-100;a100++;digui(n);}
        else if(n-50>=0) {n=n-50;a50++;digui(n);}
        else if(n-20>=0) {n=n-20;a20++;digui(n);}
        else if(n-10>=0) {n=n-10;a10++;digui(n);}
        else if(n-5>=0) {n=n-5;a5++;digui(n);}
        else if(n-1>=0) {n=n-1;a1++;digui(n);}
    
    }

    这样的话就是错误的,因为你的递归函数返回类型是void空类型,a100,a50等这些变量是作为参数传进去的,这些就不是全局变量,事实上,你可以把a100,a50这些变量改成a,b,c这样的变量,结果是一样的,因为这些都是传进去的参数,而不是全局变量。

  • 相关阅读:
    Javascript操作cookie
    上传文件-layui+ashx
    Mysql对查询结果添加序列号
    Maven详解
    解决 go iris ReadJSON 无法获取 json,并提示 unexpected end of JSON input 的错误
    Archlinux 最新安装方法 (2020.07.01-x86_64)之虚拟机 BIOS 安装
    Oracle APEX 发送邮件
    包管理Go module的使用
    Golang 解决 Iris 被墙的依赖包
    解决 Nginx 代理Apex慢的问题
  • 原文地址:https://www.cnblogs.com/myxdashuaige/p/8453151.html
Copyright © 2011-2022 走看看