C语言中的变量和常量是程序中最基本的元素之一。它们用于存储和表示程序中的数据,是程序运行的基础。本文将对C语言中的变量和常量进行详细介绍,以便读者更好地理解和使用C语言。
变量
变量是一种可变的数据存储单元,用于在程序运行过程中存储和处理数据。在C语言中,变量具有以下特点:
-
变量必须先定义后使用,定义包括变量类型和变量名。
-
变量可以被赋值多次,并且可以改变其值。
-
变量的值可以被程序读取和修改。
int a = 10; // 定义一个整型变量a,初始值为10 float b = 3.14; // 定义一个浮点型变量b,初始值为3.14 char c = 'A'; // 定义一个字符型变量c,初始值为'A' int *p; // 定义一个整型指针变量p int arr[10]; // 定义一个包含10个整型元素的数组 struct student { char name[20]; int age; } s; // 定义一个结构体变量s,包含两个成员
变量的分类,作用域和生命周期
变量的分类:
局部变量:函数体内变量为局部变量。在函数内部定义的变量,只能在函数内部使用
全局变量:函数体外的变量为全局变量。在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
int local = 2018;//局部变量
int global = 2020;//局部变量
//当局部变量和全局变量同名的时候,局部变量优先使用
printf("%d\n", local);
printf("global = %d\n", global);
return 0;
}
//总结:当局部变量和全局变量同名的时候,局部变量优先使用
变量的作用域和生命周期作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效 / 可用
而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期
常量
常量是一种固定值的数据,其值在程序运行过程中不会改变。在C语言中,常量具有以下特点:
-
常量必须在定义时进行初始化,不能被修改。
-
常量可以是字面值(如整数、实数、字符、字符串等)或者使用const关键字定义的变量。
-
常量的值可以用于计算、比较、赋值等操作。
-
C语言中支持多种常量类型,包括整数常量、实数常量、字符常量、字符串常量、布尔常量等
C语言中的常量分为以下以下几种:
1.字面常量:
3.14 1000 100 表示为字面常量
const 修饰的常变量
(const关键字:定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变)
int main()
{
const int a = 5;//这里的 a 已经被const修饰的常变量
a= 6;//是不能被直接修改的常变量
printf("%d", a);//提示错误,左值是指定的const对象。
//总结:const 修饰的常变量在C语言中只是在语法层面限制了
// 变量 a 不能直接被改变,但是 a 本质上还是一个变量的,所以叫常变量。
return 0;
}
#define 的表示符常量
(#define:#define有两个作用,一个是定义标识符,第二个是定义宏)
#define max 100
int main()
{
printf("%d\n", max);
return 0;
}
枚举常量(enum :枚举关键字)
#include <stdio.h>
enum Sex
{
MALE, //0
FEMALE, //1
SECRET //2
};
int main()
{
printf("%d\n", MALE); // 0
printf("%d\n", FEMALE);// 1
printf("%d\n", SECRET);// 2
//枚举常量的默认是从0开始,依次向下递增1的
return 0;
}
//输出为 0,1,2,