
C语言基础(下)
发布日期:2021-05-18 11:27:34
浏览次数:16
分类:精选文章
本文共 1755 字,大约阅读时间需要 5 分钟。
结构类型
在C编程中,结构和数组是两种不同的一种数据结构。它们的主要区别在于数组的内容是不可变的,而结构的内容可以被改变。例如,假设我们有如下代码:
#includestruct date { int year; int month; int day;};int main() { struct date today = {2021, 03, 17}; struct date tomorrow = today; tomorrow.day = 18; printf("Today is %i-%i-%i\n", today.year, today.month, today.day); printf("Tomorrow is %i-%i-%i\n", tomorrow.year, tomorrow.month, tomorrow.day); return 0;}
当我们运行上述代码时,输出结果如下:
Today is 2021-3-17Tomorrow is 2021-3-18
这个例子展示了结构的灵活性。通过将tomorrow.day
设置为18,我们可以修改结构体的成员值,而数组的这种修改操作则需要重新声明数组,赋值所有成员。
自定义数据类型
使用typedef可以为现有类型或自定义类型声明新的名字。在C中,typedef不仅可以为整数、浮点数等简单类型起名字,还可以为结构体、枚举类型等复杂类型起名字。以下是几种常见用法:
// 类型名称替换为任意名称的情况:typedef int new_int;// 为结构体Adate起别名:typedef struct Adate { int month; int day; int year;} Date;// 直接为结构体起名为Date:typedef struct { int month; int day; int year;} Date;
这些代码可以让程序更加灵活,例如new_int
可以作为任何整数类型的变量声明。Date
则是struct Adate
的别名,可以简化代码书写。
宏定义
宏是C语言中的文字替换机制,用于在代码中生成代码片段。它不需要编译器解析,延迟展开直到预处理完成。例如,定义常用值如PI:
#define PI 3.14159265359
这使得在代码中使用PI时,会自动替换为值。只需在函数中调用printf
或其他需要的位置即可。
头文件
头文件.h是程序中最重要的文件之一。它用来声明代码所需的功能,包括:
- 其他头文件的引用
- 定义常量
- 声明类型
- 声明函数(外部函数)
- Popup定义静态函数或内联函数
标准头文件使用条件编译指令,例如:
#ifndef __FUNCTIONS_H__#define __FUNCTIONS_H__#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define MAXSIZE 100typedef int Status;typedef char ElemType;typedef struct { ElemType *elem; int length;} SqList;Status InitList_Sq(SqList &L);void DestoryList(SqList &L);void ClearList(SqList &L);int GetLength(SqList L);int isEmpty(SqList L);int GetElem(SqList L, int i, ElemType &e);#endif /* __FUNCTIONS_H__ */
在使用这些函数或类型时,确保所有相关的头文件都已加载(通过#include
命令)。使用引号<>
搜索当前文件目录内的头文件,反斜杠则直接搜索系统路径。
发表评论
最新留言
很好
[***.229.124.182]2025年05月04日 19时49分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
flink启动(二)
2019-03-09
pair的用法
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
Flask--简介
2019-03-11
Frame--Api框架
2019-03-11
Boostrap技能点整理之【网格系统】
2019-03-11
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
2019-03-11
Git简单理解与使用
2019-03-11
echarts 基本图表开发小结
2019-03-11
adb通过USB或wifi连接手机
2019-03-11
JDK9-15新特性
2019-03-11