C语言什么是全局变量?如何应⽤?

一、问题

        全局变量是什么样的?如何使⽤呢?

二、解答

        全局变量也称为外部变量,即在函数之外定义的变量,其有效作⽤范围从定义变量的位置开始到本源⽂件结束。

#include <stdio.h>
int a, b;
void f1()
{
    ...
}
float x, y;
int f2()
{
    ...
}
char c1, c2;
char f3()
{
    ...
}
int main()
{
    ...
}

        a、 b、x、y、c1、c2 都是全局变量,但是它们的作⽤范围不同,在 main( )、f3( ) 、 f2( ) 及f1( ) 函数中可以使⽤变量a和b,在 main( ) 、f3( ) 、f2( ) 函数中可以使⽤变量 x 和 y ,在main( ) 、f3( ) 函数中可以使⽤变量 c1 和 c2。

        来看⼀个具体的应⽤实例。通过键盘输⼊⼀组数据,找出这组数据中的最⼤数与最⼩数,将最⼤数与最⼩数的位置互换,将互换后的这组数据再次输出。代码如下。

#include <stdio.h>
int min = 10000, max = 0;
void change(int a[], int n)
{
    int i, j, k;
    for (i = 0; i < n; i++)
    {
        if (a[i] < min)
        {
            min = a[i];
            j = i;
        }
    }
    for (i = 0; i < n; i++)
    {
        if (a[i] > max)
        {
            max = a[i];
            k = i;
        }
    }
    a[k] = min;
    a[j] = max;
    printf("\nThe position of min is:%3d\n", j);
    printf("The position of max is:%3d\n", k);
    printf("Now the array is:\n");
    for (i = 0; i < n; i++)
    {
        printf("%5d ", a[i]);
    }
}
int main()
{
    int a[20], i, n;
    printf("Please input the number of elements:\n");
    scanf("%d", &n);
    printf("Please input the elements:\n");
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    change(a, n);
    printf("\nmax=%5d\nmin=%5d\n", max, min);
    return 0;
}

程序运⾏结果如下:

Please input the number of elements:
5
Please input the elements:
34 45 73 46 21 56

The position of min is:  4
The position of max is:  2
Now the array is:
   34    45    21    46    73 
max=   73
min=   21

        在上述程序中,max、min 是全局变量,所以在函数 change( ) 和 main( ) 中都可以引⽤。 在main( ) 函数中调⽤ max 和 min 输出的结果和在 change( ) 函数中调⽤ max 和 min 的值是⼀致的。如果此时要在 main( ) 函数中输出k的值,则会提示如下所示的错误。

error C2065: 'k': undeclared identifier Error executing cl.exe.

        提示错误是因为 k 是局部变量,其作⽤范围仅限于 change( ) 函数中,所以在 main( ) 函数中调⽤时会提示未定义 k 这个变量。

三、总结

        建议少使⽤全局变量,其原因有以下3点。

  1. 全局变量在程序的整个执⾏过程中都将占⽤存储单元,并不是在使⽤时才在内存中为其开辟单元。
  2. 使⽤全局变量会使函数的可移植性降低,因为函数的执⾏要依赖于其所在的外部变量。如果要将⼀个函数移到另⼀个⽂件中,还要将有关的外部变量及其值⼀起移过去。如果再出现和其他变量重名的问题,就会更⿇烦。
  3. 全局变量使⽤过多会降低程序的清晰性,因为各个函数执⾏时都有可能改变全局变量的值。

相关推荐

  1. C语言什么全局变量如何

    2024-04-04 08:40:05       13 阅读
  2. C语言 goto 语句的基本格式什么如何使

    2024-04-04 08:40:05       16 阅读
  3. C语言如何限定外部变量的使范围?

    2024-04-04 08:40:05       17 阅读
  4. C语言什么外部函数?怎么

    2024-04-04 08:40:05       15 阅读
  5. C语言什么寄存器变量如何实现?

    2024-04-04 08:40:05       17 阅读
  6. C语言 void 指针就空指针吗?它有什么

    2024-04-04 08:40:05       13 阅读
  7. C语言如何指针表示字符串?

    2024-04-04 08:40:05       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 08:40:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 08:40:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 08:40:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 08:40:05       20 阅读

热门阅读

  1. 中值滤波算法与SSE2指令集并行优化

    2024-04-04 08:40:05       13 阅读
  2. 云计算与容器化

    2024-04-04 08:40:05       12 阅读
  3. SpringMvc处理器方法参数获取

    2024-04-04 08:40:05       13 阅读
  4. 神经网络、CNN、RNN、LSTM

    2024-04-04 08:40:05       18 阅读
  5. OpenCV构建交互式图像距离测量工具

    2024-04-04 08:40:05       13 阅读
  6. python vtk获取模型角度

    2024-04-04 08:40:05       13 阅读
  7. [动态规划]代码随想录总结(自用)

    2024-04-04 08:40:05       15 阅读
  8. 限制promise并行执行个数

    2024-04-04 08:40:05       14 阅读
  9. Making Anti-Palindromes

    2024-04-04 08:40:05       14 阅读