常量——不能改变的量(eg:身份证号、血型、性别)
变量——可以改变的量(eg:年龄、体重)
如何定义一个变量?
int age = 150;
float weight = 45.5f;
char ch = 'w';
变量分为两类:全局变量与局部变量
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
int local = 2018;//局部变量
int global = 2020;//局部变量
printf("global = %d\n", global);
return 0;
}
简单的讲,在{}内部中定义的变量就是局部变量,在外部定义的就是全局变量。注意,这里在全局变量与局部变量中都定义了一个名为global的变量,这里是不冲突的,遇到同名变量时,局部变量优先,所以这段代码运行后,global的输出值为2020。当然,即使是不影响,还是建议大家在写代码时使用不同的变量名。
一个简单的示例:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &a, &b);
sum = a + b;
printf("%d\n", sum);
return 0;
}
输出输入函数(printf 和 scanf)是C语言中非常重要的两个函数,printf是输出函数,这里两处使用也正好展示了printf的两种形式,第一种就是将双引号中的字符串原样输出,注意,要是代码变成 printf("输入两个操作数:>\n"); 这里 \n 是换行的意思,在输出“输入两个操作数:>”后换行,具体的区别可以自己在VS上尝试,区别是非常直观的。而第二处printf的是将sum这个变量以十进制输出的意思,%d 代表的就是以十进制的形式。
scanf函数就是从键盘键入两个数据分别存储在a和b两个变量中,这里也使用了类似printf中的语法结构,这里&a代表a的地址,就是将一个十进制的数写入a的地址。
这里VS平台提示说建议使用scanf_s代替scanf,前者是VS提供的函数,在其他平台不兼容。
在代码的第一行加入
#define _CRT_SECURE_NO_WARNINGS 1
即可。
变量的作用域和生命周期
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
1.局部变量的作用域是变量所在的局部范围
2. 全局变量的作用域是整个工程
#include <stdio.h>
int b = 1;
int main()
{
int a = 0;
printf("%d %d", a , b);
return 0;
}
#include <stdio.h>
int b = 1;
int main()
{
{
int a = 0;
}
printf("%d %d", a , b);
return 0;
}
上面两段代码,第一个可以正常运行,第二个却不行,因为{}是局部变量a的作用域 ,第二段代码的printf函数运行时,a的赋值已经失效了,故不能输出a的值。而对于全局变量b,它的作用域是整个工程,故两种情况下都可以正常输出数值,但是,前文也提到过了,在遇到同名的局部变量是,在该局部变量的作用域内,局部变量优先,例如:
#include <stdio.h>
int a = 1;
int main()
{
int a = 0;
printf("%d", a);
return 0;
}
这里a的输出值就是0。
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。
很好理解,不过多解释。
接下来说常量:
C语言中的常量分为以下以下几种:
1.字面常量
2.const 修饰的常变量
3.#define 定义的标识符常量
4.枚举常量
#include <stdio.h>
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
//pai = 5.14;//是不能直接修改的!
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
int a = MAX;
printf("a = %d\n", a);
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
//枚举常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注:枚举常量的默认是从0开始,依次向下递增1的
return 0;
}
字面常量很好理解,就是一个数值。
const 修饰的常变量,从代码中不难看出,就是在定义一个变量是,在变量类型前面加上const修饰,所以其本质上是一个变量,但是,在加上const后,变量的值会始终保持为定义的值,具有常数的性质,故称其为常变量。
注意,如果在定义了一个常变量后,又重新对其赋值(在同一作用域内),例如代码第行备注掉的部分,代码会报错:
#define 定义的标识符常量,格式在代码中,MAX就是常量100的代名词,在后面的程序中,可以直接用MAX代替100对变量进行赋值,例如代码中对a进行赋值,输出的a值为100。
枚举常量的定义格式在代码中展示的也很清楚,Sex为常量名称,这里举的例子是性别:男、女、不确定,三种情况由上到下分别对应0~2的数值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。