生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等) 有些值是可变的(比如:年龄,体重,薪资)。 不变的值,C语言中用常量的概念来表示,变的值C语言中用变量来表示。
在C语言中,变量是程序中最基本的存储单元,用于存储和操作数据。下面我将全面讲解C语言中定义变量的方法。
//数据类型 变量名;int age; // 定义一个整型变量age
float salary; // 定义一个浮点型变量salary
char grade; // 定义一个字符型变量grade数据类型 变量名 = 初始值;int count = 10; // 定义并初始化为10
double pi = 3.14159; // 定义双精度浮点数并初始化
char letter = 'A'; // 定义字符变量并初始化数据类型 变量名1, 变量名2, 变量名3;int x, y, z; // 定义三个整型变量
float a = 1.2, b = 3.4; // 定义两个浮点变量并初始化char c; // 字符型,通常1字节
short s; // 短整型,通常2字节
int i; // 整型,通常4字节
long l; // 长整型,通常4或8字节
float f; // 单精度浮点,通常4字节
double d; // 双精度浮点,通常8字节signed int si; // 有符号整型(默认)
unsigned int ui; // 无符号整型const int MAX = 100; // 常量,不可修改概念: 在函数或代码块内部定义的变量
void function() {
int localVar = 5; // 局部变量
// ...
}概念: 在所有函数外部定义的变量
int globalVar; // 全局变量
void func1() {
globalVar = 10;
}
void func2() {
globalVar = 20;
}概念: 静态变量是在程序运行期间一直存在的变量,即使离开了它的作用域,其值也会被保留。静态变量存储在内存的静态存储区,而不是栈或堆中 使用static关键字定义的变量
void func() {
static int count = 0; // 静态局部变量
count++;
}变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
特殊变量我会在后期连续出文展去深度讲解,这里我们只作基本概念的解读
int *ptr; // 整型指针
char *str; // 字符型指针
void *vp; // 无类型指针int arr[10]; // 整型数组
char name[20]; // 字符数组(字符串)
float matrix[3][3]; // 二维浮点数组struct Point {
int x;
int y;
};
struct Point p1; // 结构体变量union Data {
int i;
float f;
char str[20];
};
union Data data; // 联合体变量enum Color {RED, GREEN, BLUE};
enum Color c = RED; // 枚举变量变量命名规则 只能包含字母、数字和下划线 不能以数字开头 不能使用C语言关键字 区分大小写 应具有描述性
在C语言中,变量是程序中最基本的存储单元,用于存储和操作数据。下面我将全面讲解C语言中定义变量的方法。
#define 常量名 常量值代码示例
#define PI 3.1415926
#define MAX_SIZE 100
#define WELCOME_MSG "Hello, World!"#define SQUARE(x) ((x)*(x))
#define MAX(a,b) ((a)>(b)?(a):(b))这两行代码是C语言中使用#define预处理指令定义的宏(macro),它们分别实现了计算平方和求最大值的功能。下面我将详细解释它们的含义和工作原理:
1. #define SQUARE(x) ((x)*(x))
作用:
分解解释:
int num = 5;
int result = SQUARE(num); // 展开为:((num)*(num)) → 5*5 = 252. #define MAX(a,b) ((a)>(b)?(a):(b)) 作用:
分解解释:
int x = 10, y = 20;
int max = MAX(x, y); // 展开为:((x)>(y)?(x):(y)) → 20在C语言中,const修饰的是常变量 在C++中,const修饰的就是常量
const 数据类型 常量名 = 值;代码示例
const int MAX = 100;
const float PI = 3.14159f;
const char NEWLINE = '\n';实际存储为ASCII码值(65) 在C标准中被定义为int类型(占4字节),而非char(历史原因)
printf("%d", sizeof('A')); // 输出4(在大多数系统中)存储为连续的字符内存块 + 终止符’\0’ 实际是const char[]类型的匿名数组
printf("%d", sizeof("A")); // 输出2('A' + '\0')在 C 语言中,%s 是用于输出 字符串(字符数组) 的格式说明符。它专门用于处理以 \0 (null 字符) 结尾的字符数组(即 C 风格的字符串)。以下是详细说明和用法示例:
char str[] = "Hello World";
printf("%s", str); // 输出整个字符串后面我们会详细介绍C语言的字符串的用法
C语言同时存在字符常量和字符串常量,本质上是因为:
enum 枚举名 {常量1, 常量2, ...};代码示例
// 定义电梯状态
enum ElevatorState {
IDLE, // 空闲状态(0)
MOVING_UP, // 上升中(1)
MOVING_DOWN,// 下降中(2)
EMERGENCY_STOP // 紧急停止(3)
};
// 使用示例
enum ElevatorState currentState = IDLE; //currentState是变量名字,IDLE给变量初始化
void handleElevator() {
switch(currentState) {
case IDLE:
printf("电梯待命\n");
break;
case MOVING_UP:
printf("电梯上升中\n");
break;
// 其他状态处理...
}
}后期我会利用枚举类与其它知识的结合去编写完整的电梯状态机的代码
各位看官想必看到这里已经很辛苦了,小编来自发一杯
最后,如果你喜欢我的文章,记得给个三连哦