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

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

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

变量

一.变量的命名

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

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

2.不可以以数字开头;

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

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

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

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

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

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

三.变量的分类

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

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

 

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

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

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

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

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

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

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

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

如下图所示:

 

常量

一.常量的分类

1.字面常量;

即下方100这种

 

2.const修饰的常变量;

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

但如果在int加一个const呢

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

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

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

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

4.枚举常量。

枚举关键字:enum

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

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

 

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

如有错误,欢迎指出。

 

目录
相关文章
|
29天前
|
存储 C语言
C语言数据类型、变量和运算符以及printf相关问题
C语言数据类型、变量和运算符以及printf相关问题
|
2天前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
2天前
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
|
8天前
|
存储 Ubuntu Linux
C语言 多线程编程(1) 初识线程和条件变量
本文档详细介绍了多线程的概念、相关命令及线程的操作方法。首先解释了线程的定义及其与进程的关系,接着对比了线程与进程的区别。随后介绍了如何在 Linux 系统中使用 `pidstat`、`top` 和 `ps` 命令查看线程信息。文档还探讨了多进程和多线程模式各自的优缺点及适用场景,并详细讲解了如何使用 POSIX 线程库创建、退出、等待和取消线程。此外,还介绍了线程分离的概念和方法,并提供了多个示例代码帮助理解。最后,深入探讨了线程间的通讯机制、互斥锁和条件变量的使用,通过具体示例展示了如何实现生产者与消费者的同步模型。
|
23天前
|
存储 编译器 C语言
【C语言篇】自定义类型:联合体和枚举详细介绍
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。
|
23天前
|
存储 编译器 C语言
【C语言篇】C语言数据类型和变量
我们使⽤强制类型转换都是万不得已的时候使用,如果不需要强制类型转化就能实现代码,这样⾃然更好的.
|
1月前
|
C语言
C语言数据类型和变量
C语言数据类型和变量
27 5
|
26天前
|
存储 C语言 容器
C语言中的变量作用域
C语言中的变量作用域
|
2月前
|
存储 编译器 C语言
C语言3 变量
C语言3 变量
17 1
|
2月前
|
C语言
C语言15---在VC中变量的注意点和变量的注意细节
C语言15---在VC中变量的注意点和变量的注意细节