C语言基础知识:变量 (局部和全局)与常量(枚举常量.....)

简介: C语言基础知识:变量 (局部和全局)与常量(枚举常量.....)
+关注继续查看

        对于初学C语言的人来,肯定会首先接触到变量与常量这两个概念,本篇文章将会对这两个知识进行讲解。

变量

一.变量的命名

1.变量的名称可以由字母,数字,下划线组成(不包括操作符);某些学校考试时可能会出现这样的代码:

image

这样是错误的变量定义方式; 

2.不可以以数字开头;

3.不可以是C语言中规定的关键字。

关键字详细解析:http://t.csdn.cn/yWCnT

但在某些编译器中变量是可以被命名成关键字的。

二.变量的作用域和生命周期

1.作用域:可以简单理解为一对大括号{}里的部分,也叫代码块。

2.生命周期:指的是变量的创建到变量的销毁之间的一个时间段。

三.变量的分类

1.局部变量:只在变量所定义的作用域内有效,所有的局部变量是自动变量,即自动创建,自动消除,关键字为:auto,但这个在我们编写程序的时候通常省略;

局部变量的生命周期是变量所在的作用域;

image

 

2.全局变量:作用范围是整个工程。

全局变量的生命周期是整个程序。

全局变量若定义时未初始化,则编译器默认是0。

image

那出现下图这种情况是因为什么呢?

image

 这是因为程序运行时是先从主函数进去,自上而下扫描,当执行到printf时,因为int a=10;在main函数的下方,编译器找不到,便会报错。要想解决这个问题,我们可以先在main函数上方声明再使用,如图:

image

 我们平时在定义全局变量的时候,紧接着就初始化可以有效避免上述情况的发生。

在这里再介绍一个关键字:extern

它的作用是:引用外部符号

如下图所示:

image

image

 

常量

一.常量的分类

1.字面常量;

即下方100这种

image

 

2.const修饰的常变量;

我们都知道赋值语句左边必须是可修改的左值,一般地,如下图所示程序是没有问题的

image

 但如果在int加一个const呢

image

 很显然编译器会报错。这是因为const修饰后使变量a具有了常属性,但他本质上还是个变量,所以a叫const修饰的常变量。再来看看下面这张图

image

 arr是一个数组,这里a必须要求是一个常量,虽然a有了常属性,但本质上仍是个变量,所以不能用在数组中。

3.#define定义的标识符常量;

image

 需要注意的是3后不能加分号‘;’

4.枚举常量。

枚举关键字:enum

生活中,总有一些东西是能一一列举出来的,如性别,星期啊;

对于类似这类的,我们可以使用枚举常量,详情如下图所示:

image

 

本篇文章就到这儿啦,谢谢你的阅读。

如有错误,欢迎指出。

 

目录
相关文章
|
10天前
|
存储 编译器 Linux
C语言自定义类型详解 位段+(联合体,枚举)
C语言自定义类型详解 位段+(联合体,枚举)
|
20天前
|
存储 网络协议 编译器
一篇博客学会系列(2)—— C语言中的自定义类型 :结构体、位段、枚举、联合体
一篇博客学会系列(2)—— C语言中的自定义类型 :结构体、位段、枚举、联合体
32 0
|
21天前
|
存储 C语言
C语言自定义类型_枚举&联合(3)
C语言自定义类型_枚举&联合(3)
28 1
|
25天前
|
存储 编译器 C语言
C语言进阶-自定义类型:结构体、枚举、联合(2)
C语言进阶-自定义类型:结构体、枚举、联合
25 0
|
25天前
|
存储 编译器 Linux
C语言进阶-自定义类型:结构体、枚举、联合(1)
C语言进阶-自定义类型:结构体、枚举、联合
24 0
|
26天前
|
编译器 C语言
C语言进阶,第4节-自定义类型详解(结构体+枚举+联合)
C语言进阶,第4节-自定义类型详解(结构体+枚举+联合)
|
26天前
|
编译器 Linux C语言
讲一讲C语言中的结构体、位段、枚举与联合
讲一讲C语言中的结构体、位段、枚举与联合
|
27天前
|
编译器 Linux C语言
【C语言航路】第十二站:自定义类型:结构体、枚举、联合体
【C语言航路】第十二站:自定义类型:结构体、枚举、联合体
33 0
|
1月前
|
编译器 C语言 C++
C语言学习系列->联合体and枚举
C语言学习系列->联合体and枚举
19 0
|
1月前
|
C语言
C语言结构体位段,枚举知识
C语言结构体位段,枚举知识
18 0
相关产品
云迁移中心
推荐文章
更多