C语言初阶之变量和常量

在C语言中,经常使用内置数据类型来创建临时变量来储存一些常量。但变量和常量分别是什么呢?

变量实际上是一块内存中的空间,而创建变量就是向内存申请一块空间。在数据类型中提到的字节数就是用该数据类型定义变量时占据空间得到的内存空间的大小。而常量指的是在程序运行过程中不会改变的量,如常量字符串,常量字符,常量整形等等。

接下来着重的描述变量。

变量的声明

声明一个变量必须指定变量的类型和创建变量的名字。

如int height;float volume;

第一个表达式就是声明了一个整形的变量,变量名是height;

第二个表达式是声明了一个单精度浮点数的变量,变量名是voiume;

但变量的取名规则也是有这一定的限制的,这个在下文会详细介绍。

变量的赋值和初始化

当程序开始执行时,某些变量会被自动赋值为0,但大多数变量不会,没有默认值且并未赋值的变量是未初始化的,强行使用未初始化的变量会出现很多意想不到的错误。赋值是给变量一个具体的值,而初始化就是在声明变量的同时进行赋值,这里建议大家在声明变量的同时进行赋值(未初始化的字符数组可能编译结果会出现错误)。初始化单精度浮点数的时候建议在常量的末尾加上f。

变量的分类及变量的生命周期及作用域

变量分为全局变量和局部变量。笼统的说,全局变量是在main函数的{}以外声明的变量,而局部变量是在main函数的{}里创建的变量。当全局变量和局部变量的名字一致时,局部变量在程序运行时会优先考虑。局部变量的作用域是变量所在的局部范围,生命周期从进入作用域开始到离开这个作用域结束。作用域简单来说就是变量的有效区间,在这个区间内变量实际存在并可以参与运算,而离开这个区间时,变量所占用的空间会释放,变量也就失去作用了。相比之下全局变量则比较强大,全局变量的作用域是整个工程,生命周期是整个程序的生命周期。但变量的生命周期和作用域并非是不能改变的,这里我们不探讨。

常量

常量大致有四种,我们一一进行介绍。

1.字面常量,如1,2,3,4,‘a’,'b',"hello world",‘n’简单来说就是一些固定的数值。其中得常量字符串“hello world”的结尾处还有一个'',''是字符串结束的标志。

2.const修饰的常变量,注意:只是变量被修饰后具有了常属性,但本身还是一个变量。使用的方法时const 变量类型 变量名,如const int a;

声明一个数组时,[]中只能放一个常量,而const修饰的变量虽然具有常属性,但依然不是常量。另外const的功能其实是很强大的,在提高代码风格方面有这不小的功劳。再举一个指针方面的例子,const int*p和int* const p其实是不同的哦,这里不做过多的讨论,指针章节会比较系统的去讨论。

3.define定义的宏常量,使用方式是#define 常量名 常量大小(后面没有分号)

如#define N 10代表定义一个常量N,N的大小为10,这个时候的N与const的修饰的不同,确确实实是一个常量,另外#define作为预处理语句,一般在main函数运行前进行定义。顺带一提,使用vs的小伙伴的在源代码的开头放的#define  _CRT_SECURE_NO_WARNINGS 1也是一种定义常量哦。同时,#define定义的宏一般是大写的,这是默许的一种规则,虽然小写也不会出错。

4.enum定义的枚举常量,正常情况下{是按照顺序0,1,2定义的常量},enum常量在定义以后不能改变,但是可以在赋值的时候进行一些改变。例如:

在这串代码中,在定义enum变量时,定义sum=7,使得这个枚举集合的起始值是7,而mon=1再次改变了起始值,使得tue以及后面的常量分别2,3,4,5,6,7。

标识符

在编写程序时对变量、常量、函数、及其他实体取得名字就是标识符。标识符只能由数字,字母和下划线_组成,但数字不能用来开头,且不能与关键字以及库函数等等C语言内置的实体同名。

下面列举一些关键字

auto break case char const continue default do double else enum extern float for goto if int long 

register return short signed sizeof static struct switch typedef union unsigned void volatile while

C99新增:inline restrict   _Bool  _Complex   _Imaginary

C1X新增:_Alignas  _Alignof   _Atomic   _Generic   _Noreturn    _Static_assert   _Thread_local

相信有些关键字大家有一定的认识,其他的关键字在后续的学习会慢慢涉及。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>