局部变量和全局变量

局部变量的全局变量(for中的局部变量)

#include <cstdio>

int main(int argc, char *argv[]) {
    int i = 520;
    printf("before: i = %d\n", i);
    for (int i = 0; i < 10; i++) {
        printf("%d \n", i);
    }
    printf("after: i = %d\n", i);
    /*
    before: i = 520
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    after: i = 520*/

    return 0;
}

全局变量

#include <stdio.h>

int count = 0;

void a();
void b();
void c();

void a(){
    count++;
}

void b(){
    count++;
}

void c(){
    count++;
}

int main(){
    a();
    b();
    c();
    printf("小郭今天被爆了%d次",count);
	return 0;
}

全局变量和局部变量

#include <stdio.h>

void func();
int a, b = 520;

void func(){
    int b;
    a = 880;
    b = 120;
    printf("In func, a = %d, b = %d\n", a, b);
}

int main(){
    printf("In main, a = %d, b = %d\n", a, b);
    func();
    printf("In main, a = %d, b = %d\n", a, b);
    return 0;
    /* result:
    In main, a = 0, b = 520
    In func, a = 880, b = 120
    In main, a = 880, b = 520*/
}

如果函数内部出现一个和全局变量重名的局部变量,编译器并不会报错,而是在函数中屏蔽全局变量

extern

#include <stdio.h>

void func();

void func(){
    extern int count;
    /*修饰符extern用在变量或者函数的声明前,
     * 用来说明“此变量/函数是在别处定义的,要在此处引用”。*/
    count++;
}

int count = 0;

int main(){
    func();
    printf("%d\n", count);
	return 0;
}

不要使用大量的全局变量
1.使用全局变量会占用更多内存,因为全局变量从被定义时开始,直到程序退出才释放
2.污染命名空间,虽然局部变量会屏蔽全局变量,但这也会降低程序可读性,难以判断变量的含义和作用范围
3.提高了程序的耦合性,不清楚全局变量被哪个函数修改过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值