复习课4 变量常量与局部变量全局变量
  uUWKQE7Avyk4 2023年11月02日 38 0

一.变量与常量

1.我们先从生活中来理解变量与常量的区别,变量顾名思义就是会变的量,常量则是不会改变的量,那么我们生活中有哪些变量与常量呢?

我这里举了一些例子:

变量:年龄、身高、体重、物价······

常量:血型、性别、身份证号·····

那么在C语言中我们又是怎么表示变量与常量的呢?

以下举了几个定义变量的例子:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void){
	int age = 10;        //年龄
	short high = 170;    //身高
	char ch = 'a';       //字母
	float score = 95.5;  //分数
	return 0;
}

我们将以上代码写入到main()函数中,可以发现程序成功的编译并运行了,如图所示:

复习课4 变量常量与局部变量全局变量_复习

可以看到我在初始化变量的时候都在后面加了注释(//后面的内容被称为注释,之后会详细讲),这就提醒着我们什么类型的数据就需要用到什么样子的数据类型,要一一对应


二.局部变量与全局变量

1.我们还是用写代码的方式来了解全局变量与局部变量的区别,代码如下:

#include<stdio.h>
int score = 100;     //这是一个全局变量
int main(void){
	printf("score = %d\n",score);
	getchar();
	return 0;
}

我们可以看到变量score被初始化在了main()函数之外,那么我们在main()函数内部是否可以通过printf()函数来输出这个变量score呢?答案是可以的,程序运行结果如下:

复习课4 变量常量与局部变量全局变量_复习_02

所以我们理解为全局变量就是在大括号外部定义的变量,而局部变量则是在大括号内部定义的变量,下面我们通过代码演示来区分全局变量与局部变量,代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int score = 100;
void high(void){
	int high = 100;
	printf("high = %d\n",high);
	printf("score = %d\n",score);
}
  //这是一个全局变量
int main(void){
	high();
	printf("high = %d\n", high);
	printf("score = %d\n",score);
	getchar();
	return 0;
}

这里我们自定义了一个函数,这个自定义函数名称为high,该函数返回值为空且不接受任何形参,我们在这个自定义函数中初始化了变量high,这个high就属于局部变量,我们再在main()函数中调用我们的自定义函数,最后在main()函数中添加与自定义函数中相同的printf()语句来打印两个变量,我们来看结果,如图所示:

复习课4 变量常量与局部变量全局变量_复习_03

我们可以看到自定义函数中的printf()函数都输出了正常的结果,分别是 100 100,在main()函数中score正常输出了,但是high的值却出乎我们意料,输出了一个很大的数据,这就是全局变量与局部变量的区别,局部变量只能在指定的函数内部使用,而全局变量可以在任意一个函数中调用,这里main()函数由于没有定义变量high,所以printf()函数输出的结果是内存随机值,如果要让变量high也能正常输出的话最简单的方式就是将high也变成全局变量,如图所示:

复习课4 变量常量与局部变量全局变量_C语言_04

注意全局变量的名称不能与自定义函数的名称相同,否则会出错!

2.全局变量容易被污染的问题

我们可以尝试在IDE中写入以下代码并编译尝试运行:

int main(void)
{
  int i = 1;
  int i = 10;
return 0;
}

我们会发现编译器报了一个错误,告诉我们变量被重定义,如图所示:

复习课4 变量常量与局部变量全局变量_复习_05

但是当我们将代码修改成以下形式就会发现程序不仅能够正常编译还没有报错

#include<stdio.h>
int i = 10;
int main(void)
{
int i = 1;
printf("i=%d\n",i);
return 0;
}

复习课4 变量常量与局部变量全局变量_C语言_06

所以在C语言中当全局变量名称与局部变量的名称相同的时候,局部变量优先使用,所以我们写代码的时候需要注意尽量不要将全局变量的名称写成与局部变量相同,防止出现变量被污染的情况

                                                                                                             2023/9/15

                                                                                                                 王起舟

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  cnCTZTo8tgOC   2023年11月02日   33   0   0 作用域bc局部变量
uUWKQE7Avyk4