变量与常量详解
变量与常量详解
- 前言
- 一、变量是什么?
- 1、定义变量的方法
- 2、变量的命名
- 3、变量的分类
- (1)局部变量
- (2)全局变量
- (3)两者重点
- 4、变量的作用域和生命周期
- (1)作用域
- (2)生命周期
- 二、常量是什么?
- 1、字面常量
- 2、const修饰的常变量
- (1)const修饰的常变量重点
- 3、#define 定义的标识符常量
- 4、枚举常量
- 总结
前言
我们生活的世界变化万千,但有些东西是不变的(比如:圆周率、身份证号、性别等),而有些东西是随着时间或者某种外因而变化的(比如:身高、体重、年龄等)。
一、变量是什么?
C语言中把变化的值,用变量概念来表示
1、定义变量的方法
#include<stdio.h>
int main()
{int age=18;float height=184.5f;char ch='H';return 0;
}
2、变量的命名
1).只能由字母(包括大写和小写)、数字和下划线( _ )组成。
2).不能以数字开头。
3).长度不能超过63个字符。
4).变量名中区分大小写的。
5).变量名不能使用关键字。
3、变量的分类
变量分为局部变量和全局变量
(1)局部变量
局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。
也可以浅显的理解为{ }内定义的变量只能在{ }内的范围使用。
代码如下(示例):
#include<stdio.h>
int mian()
{int a = 1;if (a = 1){int j = 1;}printf("%d", j);return 0;
}
此时就会报错如下:

如果将printf函数放入if语句{ }中就可以打印
代码如下(示例):
#include<stdio.h>
int mian()
{int a = 1;if (a = 1){int j = 1;printf("%d", j);}return 0;
}
此时就会打印成功:

(2)全局变量
全局变量也称为外部变量,它是在函数外部定义的变量。
它不属于哪一个函数,它属于一个源程序文件。
代码如下(示例):
#include<stdio.h>
int j = 1;//全局变量
int main()
{int a = 1;if (a = 1){printf("%d\n", j);}printf("%d\n", j);return 0;
}
编译结果如下:

我们可以发现不论是哪里的printf函数都将j的值打印出来了,这就是全局变量作用
(3)两者重点
当局部变量和全局变量同名的时候,局部变量优先使用。
代码如下(示例):
#include<stdio.h>
int j = 10;//全局变量
int main()
{int j = 20;//局部变量printf("%d\n", j);return 0;
}
编译结果如下:

4、变量的作用域和生命周期
(1)作用域
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
(2)生命周期
1.变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
2.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
3. 全局变量的生命周期是:整个程序的生命周期。
二、常量是什么?
C语言中把不变的值,用常量概念来表示
C语言中的常量分为四种:字面常量、const 修饰的常变量、#define 定义的标识符常量、枚举常量。
1、字面常量
代码如下(示例):
#include<stdio.h>
int main()
{18;184.5;80;returm 0;
}
2、const修饰的常变量
代码如下(示例):
#include<stdio.h>
int main()
{const int a=10;int a=20;printf("%d",a);return 0;
}
编译结果如下:

就会出现a重定义,无法修改
(1)const修饰的常变量重点
虽然被const修饰后为常变量,但本质上是变量
代码如下(示例):
#include<stdio.h>
int main()
{const int a = 10;int arr[a] = { 0 };return 0;
}
编译结果如下:

就会出现报错表达式中必须含有常量值,因为在静态内存分配中要先分配内存,此时就要求表达式必须是一个常量,也间接证明了,const修饰后的常变量,本质上是一个变量。
3、#define 定义的标识符常量
代码如下(示例):
#include<stdio.h>
#define MAX 1000;
int main()
{int a = MAX;printf("MAX = %d\n",a);return 0;
}
编译结果如下:

为了将标识符与变量名区别开来,习惯上标识符全部用大写字母表示。程序中用双引号括起来的宏在预处理的时候是不会被宏替换的。因为在 C 语言中,用双引号括起来表示的是字符串,从上图编译结果就可以看出来。#define 的作用域为自 #define 那一行起到源程序结束,如果要终止其作用域可以使用 #undef 命令。
4、枚举常量
代码如下(示例):
#include <stdio.h>
enum Sex
{MALE,FEMALE,SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);//注:枚举常量的默认是从0开始,依次向下递增1的return 0;
}
编译结果如下:

当然你也可以直接在定义的时候直接定义初始大小,也是可以的
#include <stdio.h>
enum Sex
{MALE=2,FEMALE,SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);//注:枚举常量的默认是从0开始,依次向下递增1的return 0;
}
编译结果如下:

总结
以上就是今天我给大家所介绍的内容,大家一定要多记住两者区别和重点,希望能够对初学者学习变量和常量时有所帮助。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
