计算机萌新的成长历程——初识C语言4

今天我将分享变量与常量这两个知识点,这次我将以问答的形式来阐述我对这两个知识点的理解。

Q1:如何去理解变量与常量这两个名词?

这里我是简单的理解为“变化的量”——变量,和“不变的量”——常量。

Q2:在C语言中如何去定义变量?

在C语言中采用的是“数据类型 + 变量 = 值”,举几个例子来说明这个格式:

代码语言:javascript
复制
char a = 'A';//这里定义变量a为字符'A';
short a = 10;//这里定义的变量a为整数10;
float a = 3.1f;//这里定义的变量a为小数3.1;在VS中小数默认为double,如果把double的数值赋值给float会导致精度丢失,所以需要在数值后加上f;
double a = 3.1;//这里是定义变量a为小数3.1;

Q3:在C语言中变量分为几类?

在C语言中,变量分为两类——“全局变量”和“局部变量”。

Q4:如何理解“全局变量”与“局部变量”?

全局变量——定义在代码块({})之外的变量;

局部变量——定义在代码块去({})内部的变量;

这里我们需要借助代码来进一步理解

代码语言:javascript
复制
#include <stdio.h>

int a = 1;//这里的a就是全局变量;

int main()//计算机世界的入口,有且仅有一个;
{

int b = 2;//这里的b就是局部变量;

return 0;

}

这里我们可以理解为如果你要来“中国”,首先你要学会“普通话”,这个“普通话”是你来中国前需要掌握的,也就是“全局变量”,但是当你去不同的地方,你会发现不同地方的人说的并不全是“普通话”,而是有各种“方言”,这里的“方言”就是“局部变量”。

Q5:“全局变量”与“局部变量”的变量名能相同吗?

全局变量与局部变量的变量名可以相同,而且能同时存在;但是,在程序执行时会优先执行局部变量,如下图

计算机萌新的成长历程——初识C语言4_局部变量

所以建议是两个变量名不要重复,否则会让计算机误会,从而产生bug

Q6:局部变量和全局变量的范围如何定义?

全局变量与局部变量的使用范围如下图所示:

计算机萌新的成长历程——初识C语言4_代码块_02
计算机萌新的成长历程——初识C语言4_代码块_03

由上图可知变量a不管是在第一个代码块内还是在第二个代码块内都能使用

计算机萌新的成长历程——初识C语言4_全局变量_04
计算机萌新的成长历程——初识C语言4_全局变量_05

由上图可知,变量b在第一个代码块内无法使用,系统报错未定义,在第二个代码块内正常使用。

所以我们可以得出结论,全局变量跟随整个工程;局部变量只能在相对应的代码块({})内使用。

Q7:如何使用变量?

这里我们以计算两数之和为例引入一个输入函数scanf来说明如何使用变量。

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);//&是读取地址符号
int c = 0;
c = a + b;
printf("c=%d\n", c);//将c的值打印成字符‘c=’加“整数数值”
return 0;
}

正常运行代码后,输入数值123与数值456,结果如下图所示:

计算机萌新的成长历程——初识C语言4_代码块_06

这里有以下几点需要展开说明:

1.scanf(“%d%d” , &a , &b);这里因为我想输入两个数值进行相加,所以是两个%d。

那如果只输入一个数值又是怎样的呢?这里我将123赋值给变量a,函数正常运行后输入数值789结果如下图:

计算机萌新的成长历程——初识C语言4_代码块_07

由此可知在输入函数中,我们输入的值会直接赋值给对应变量然后继续运行。

2.因为我使用的版本是VS2019,在其他VS版本中以我这种格式的代码运行,系统可能会报错,这里只需要把int c = 0;这行代码提到scanf函数前面就行,代码如下

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
int a = 0;
int b = 0;
int c = 0;
//C语言语法规定,变量要定义在当前代码块的最前面
scanf("%d%d", &a, &b);//&是读取地址符号
c = a + b;
printf("c=%d\n", c);//将c的值打印成字符‘c=’加“整数数值”
return 0;
}

这样就能解决报错的问题了。

3.这个问题是我自己在使用VS2019时遇到的,在VS2019版本中你正常打开程序的话是没有第一行代码“#define _CRT_SECURE_NO_WARNINGS 1”,之后运行程序的话,系统会报错,如下图所示:

计算机萌新的成长历程——初识C语言4_局部变量_08

这里我查阅了相关资料,然后找到了解决方法,具体内容各位可以查看

scanf返回值被忽略的原因及其解决方法(VS2019)

_CRT_SECURE_NO_WARNINGS作用

接下来对变量的使用做个总结,如果我需要计算两个数相加的话,我可以直接定义两个变量并把先要相加的数值赋予这两个变量,然后再定义一个变量将他们相加的和赋值给这个新变量,最后打印就行,如果我需要进行其他操作,那只需要按照我的要求去定义变量,然后使用相关的函数来使用变量就行。

简单来说变量就是计算机使用各种函数工具执行命令时的对象,使用变量的方法就是根据自身的需求,第一步先定义变量,第二部运用相关函数来使用变量。

Q8:变量的作用域和生命周期是什么?

作用域简单的理解就是使用范围,前面有提到过全局变量的使用范围是整个工程,局部变量的使用范围是对应的代码块内部

生命周期简单的理解就是变量开始到结束的过程,这里我们可以这样去理解:

全局变量的生命周期是从进入计算机世界开始到出来为止;

局部变量的生命周期是从对应代码块的第一行开始到最后一行为止。

代码语言:javascript
复制
#include <stdio.h>
int a = 1;//这里的a就是全局变量;
int main()//计算机世界的入口,有且仅有一个,a的生命周期开始;
{//b的生命周期的开始
int b = 2;//这里的b就是局部变量;
{//c的生命周期的开始
int c = 3;//这里的c就是局部变量,;
}//c的生命周期结束

return 0;//计算机世界的出口,a、b的生命周期结束

}

以上就是我今天分享的全部内容了,接下来随着我学习的深入,我会继续分享相关的内容,感谢大家的阅读。