C零基础视频-24-局部变量与全局变量

[TOC] 变量可以定义在函数内部也可以定义在函数外部,根据定义的位置不同,分为局部变量全局变量。局部变量与全局变量的作用域不同。 #局部变量 定义在函数内部的变量是局部变量,局部变量。局部变量的作用域限定在当前函数中。不同的函数中相同名字的局部变量不会互相影响。

#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;
}

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

#全局变量 定义在函数外的变量就是全局变量,全局变量在整个工程作用域中都有效,多个函数操作同一个全局变量,会互相影响。

#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;
}

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

#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;
}

#多文件中使用全局变量 同函数类似,全局变量可以将声明与定义分离开。一般我们应该将全局变量定义在.c/.cpp文件中,然后在头文件中声明。 全局变量的声明需要关键字extern

extern int g_nPetState;

猜你喜欢

转载自www.cnblogs.com/shellmad/p/11646269.html