我是靠谱客的博主 长情大叔,最近开发中收集的这篇文章主要介绍C语言基础之全局变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    全局变量

    ◆ 定义在函数外面的变量是全局变量

    ◆ 全局变量具有全局的生存期和作用域

        ★ 它们与任何函数都无关

        ★ 在任何函数内部都可以使用它们

    【例1】

#include<stdio.h>

int f(void);

int gAll = 12;

int main(int agrc, const char* argv[])
{
	printf("in main gAll = %dn", gAll);
	f();
	printf("in main gAll = %dn", gAll);
	return 0;
}

int f(void)
{
	printf("in f gAll = %dn", gAll);
	gAll += 2;
	printf("in f gAll = %dn", gAll);
	return gAll;
}

    这说明,gAll在f()和main()里面是一样的变量,这就是全局变量,不论函数在不在,它一直在那里。

    全局变量初始化

    ◆ 没有做初始化的全局变量会得到0值

        ★ 指针会得到NULL值

    ◆ 只能用编译时刻已知的值来初始化全局变量

    ◆ 它们的初始化发生在main函数之前

    【例2】

#include<stdio.h>

int f(void);

int gAll;                                             //在本案例中,全局变量gAll没有做初始化

int main(int agrc, const char* argv[])
{
	printf("in main gAll = %dn", gAll);
	f();
	printf("in main gAll = %dn", gAll);
	return 0;
}

int f(void)
{
	printf("in f gAll = %dn", gAll);
	gAll += 2;
	printf("in f gAll = %dn", gAll);
	return gAll;
}

    本案例的运行结果如下图所示:

    【例3】

#include<stdio.h>

int f(void);

int gAll=f();                                        //在本案例中,全局变量gAll没有被赋予编译时刻已知的值

int main(int agrc, const char* argv[])
{
	printf("in main gAll = %dn", gAll);
	f();
	printf("in main gAll = %dn", gAll);
	return 0;
}

int f(void)
{
	printf("in f gAll = %dn", gAll);
	gAll += 2;
	printf("in f gAll = %dn", gAll);
	return gAll;
}

    在本案例使用C语言进行编译时,就会报错:

    【例4】

#include<stdio.h>

int f(void);

int gAll=12;
int g2 = gAll;                                      //在本案例中,全局变量g2被赋予为另一个全局变量gAll的值 

int main(int agrc, const char* argv[])
{
	printf("in main gAll = %dn", gAll);
	f();
	printf("in main gAll = %dn", gAll);
	return 0;
}

int f(void)
{
	printf("in f gAll = %dn", gAll);
	gAll += 2;
	printf("in f gAll = %dn", gAll);
	return gAll;
}

    在本案例使用C语言进行编译时,就会报错:

    被隐藏的全局变量

    ◆ 如果函数内部存在与全局变量同名的变量,则全局变量被隐藏

    【例】

#include<stdio.h>

int f(void);

int gAll = 12;

int main(int agrc, const char* argv[])
{
	printf("in main gAll = %dn", gAll);
	f();
	printf("in main gAll = %dn", gAll);
	return 0;
}

int f(void)
{
	int gAll = 1;                                         //在本案例中,在更小的一个范围f()中定义了
	printf("in f gAll = %dn", gAll);                     //一个与全局变量gAll同名的局部变量,则原
	gAll += 2;                                            //来的全局变量会被覆盖
	printf("in f gAll = %dn", gAll);
	return gAll;
}

 

最后

以上就是长情大叔为你收集整理的C语言基础之全局变量的全部内容,希望文章能够帮你解决C语言基础之全局变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部