# C 语言数据类型
浮点数常数默认是 double 类型,整数常数默认是 int 类型。
浮点数在存储的过程中是按照二进制形式存储的,是不精确的,存在精度损失,大多数浮点数不是一个精确表示的数。
- 浮点数怎么做比较?
做差值比较,用减法,用 abs 函数求绝对值,然后比较大小。
# static 关键字
static 关键字用来修饰局部变量,使其在程序的生命周期内保持不变,即使函数调用结束,局部变量也不会被销毁。
- 限制作用域
static 修饰的变量只能在本文件中使用,不能在其他文件中使用。 - 管理生命周期
static 变量的生命周期和程序的生命周期相同,直到程序结束才会销毁。
结构体联合指针去访问结构体成员时,要用 -> 符号,而不是。符号。
结构体可以包括结构体及函数;用 typedef 定义结构体时,可以简称去书写
# 枚举
不写值,默认是从 0 开始的。
枚举可以用 typedef 定义别名,也可以用 typedef 定义枚举类型。
枚举可以用宏定义,也可以用 const 定义。
枚举可以用 switch 语句进行条件判断。
枚举可以用函数进行转换。
#include <stdio.h> | |
#include <string.h> | |
// 枚举类型定义 | |
typedef struct books { | |
char name[50]; | |
char author[50]; | |
int id; | |
} php; | |
void printfBook(php* book) { | |
printf("%s\n", book->name); | |
printf("%s\n", book->author); | |
printf("%d\n", book->id); | |
strcpy(book->author, "lele"); // 修改结构体的 author 字段,用指针来完成 | |
} | |
int main() { | |
php book1 = { "xiaoshuo1", "lei", 126656 }; | |
php book2 = { "xiaoshuo2", "lei", 123456 }; | |
php book3 = { "xiaoshuo3", "lei", 123452 }; | |
php book4 = { "xiaoshuo4", "lei", 12356 }; | |
printfBook(&book4); | |
printf("After printfBook: %s\n", book4.author); // 检查修改是否生效 | |
printfBook(&book3); | |
printf("After printfBook: %s\n", book3.author); // 检查修改是否生效 | |
printfBook(&book2); | |
printf("After printfBook: %s\n", book2.author); // 检查修改是否生效 | |
printfBook(&book1); | |
printf("After printfBook: %s\n", book1.author); // 检查修改是否生效 | |
return 0; | |
} |