C语言基础入门48篇_24_局部变量与全局变量(局部变量作用域在函数{}中,多函数同名不影响、全局变量整个工程内有效,多函数操作会影响、多cpp共用全局加extern、全局命名规范前加g_)

本文详细介绍了C语言中的局部变量和全局变量。局部变量仅在定义的函数内部有效,不同函数的同名局部变量互不影响;全局变量在整个程序中都有效,多个函数可共享并可能互相影响。通过示例代码展示了全局变量如何在多个函数间交互,并解释了全局变量可能导致的命名冲突问题。同时,介绍了如何在多cpp文件中使用全局变量,需在头文件中使用`extern`声明。
摘要由CSDN通过智能技术生成

变量可以定义在函数内部也可以定义在函数外部,根据定义的位置不同,分为 局部变量全局变量局部变量与全局变量的作用域不同

1. 局部变量


定义在函数内部的变量是局部变量,局部变量。局部变量的作用域限定在当前函数中,即{}内。不同的函数中相同名字的局部变量不会互相影响。

#include <stdio.h>

void Func1()
{
    int nValueLocal = 0x12345678;
    printf("Func1中的局部变量:%X\r\n", nValueLocal);
}

void Func2()
{
    int nValueLocal = 0x55667788;
    printf("Func2中的局部变量:%X\r\n", nValueLocal);
}

int main(int argc, char* argv[])
{
    Func1();
    Func2();
    return 0;
}

这可以类比:不同的城市,可能有相同名字的公路。

2. 全局变量


定义在函数外的变量就是全局变量,全局变量在整个工程作用域中都有效,多个函数操作同一个全局变量,会互相影响。
命名规范中全局变量前加 g_,代表global

#include <stdio.h>

int g_nValue = 0; 


void SetGlobalValue()
{
    g_nValue = 100;
    printf("我将全局变量的值设置为:%d\r\n", g_nValue);
}

void AddGlobalValue()
{
    g_nValue += 5;
    printf("全局变量的增加后的值为:%d\r\n", g_nValue);
}
int main(int argc, char* argv[])
{
    SetGlobalValue();
    AddGlobalValue();
    
    g_nValue *= 2;
    printf("不同的函数可以操作同一个全局变量:%d\r\n", g_nValue);
    return 0;
}

运行结果:
在这里插入图片描述

2.1 全局变量的一般作用


全局作用可以用于多个函数的交互,函数将需要交互的信息放在全局变量中,使得我们可以不用依赖于函数返回值,也可以减少函数参数的传递。

定义全局变量时注意:全局函数一时爽,命名冲突火葬场

一个宠物养成游戏的例子如下:

#include <stdio.h>

int g_nPetState = 0;

void ShowPetState()
{
    switch (g_nPetState)
    {
    case 0:
        printf("初始化状态\r\n");
        break;
    case 1:
        printf("运动状态\r\n");
        break;
    case 2:
        printf("吃饭状态\r\n");
        break;
    case 3:
        printf("睡觉状态\r\n");
        break;
    }
}

void SetRun()
{
    g_nPetState = 1;
}

void SetEat()
{
    g_nPetState = 2;
}

void SetSleep()
{
    g_nPetState = 3;
}

int main(int argc, char* argv[])
{
    ShowPetState();

    SetEat();
    ShowPetState();

    SetSleep();
    ShowPetState();

    SetRun();
    ShowPetState();
    return 0;
}

运行结果:
在这里插入图片描述

2.2 多cpp文件中使用全局变量加extern


同函数类似,全局变量可以将声明与定义分离开。一般我们应该将全局变量定义在.c/.cpp文件中,然后在头文件中声明。
全局变量时在整个工程中有效的,当存在其他的.cpp文件想要调用全局变量时,全局变量的声明需要关键字 extern

extern int g_nPetState;

实例:在一个头文件中声明前加extern,即可在多个cpp文件中使用
工程整体结构如下图:
在这里插入图片描述
myHeader.h:

extern int g_nPetState;

Func2.cpp:

#include "myHeader.h"

void Func() 
{
	g_nPetState = 6;
}

TestC.cpp:

#include "myHeader.h"
#include <stdio.h>

int g_nPetState = 0;

{...}

int main(int argc, char* argv[])
{
	ShowPetState();

	SetEat();
	ShowPetState();

	SetSleep();
	ShowPetState();

	SetRun();
	ShowPetState();
	return 0;
}

3. 学习视频地址:局部变量与全局变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值