写这篇的目的是总结c语言基础语法,梳理知识框架,方便之后复习。。。
先回顾下c语言课本里面的框架:
一:c语言框架
链接:
(1) c入门
(2) c预处理器和库
(3)数据类型和变量
(4)常量和作用域
(5)基本运算
(6)语句
(7)数组
(8)函数
(9)结构体和共用体
(10)链表
(11)文件的输入输出
(12)内存管理
二:c预处理器和库
1.常用的预处理指令:
(1).#define
用于进行字符串替换,不进行类型检查,无数据类型。在预处理阶段进行处理。
(2).##
用于进行字符拼接。例如 #define x(4) x##4 则x(4) 相当于x4
(3).#error:
(1)#error 是一种预编译器指示字,用于生成一个编译错误消息 。可以进行自定义
(2) 用法:#error [message] //message为用户自定义的错误提示信息,可缺省。
(3) #error 可用于提示编译条件是否满足。编译过程中的任何错误意味着无法生成最终的可执行程序。
例如:
#ifndef UNIX
#error This software requires the UNIX OS.
#endif
(4).#parama
进行字节对齐的预处理指令(后面补充)
(5).include
进行头文件的包含,将头文件包含于当前文件中
(6).#undef
决定宏定义的作用域,作用域为#define到#undef
(7).条件编译
用于判断不同宏定义的值,从而执行不同的流程
#ifdef #elif #else #endif
2.预定义宏
如 编译器内部自带的宏,供用户使用。
如 __FILE__ __DATE__ __TIME__
使用 printf("%s",__DATE__);
4.内敛函数
具有内部链接的函数称为内敛函数
定义inline int square(int x){ return x*x;}; 使用 square
内联函数内部代码量不能太大,不能有循环。否则执行时间会变长,调用开销会增大
它的作用是能够减少函数调用开销以及提高程序执行效率
5.断言库
c++11特性,用于编译器检查表达式是否正确。如果不正确打印对应的字符串,并让编译不通过。
用#define NODEBUG 来决定断言库是否打开,如果用该宏定义,那么断言库不打开,如果没有,那么断言库打开。
断言库所用的表达式一般是逻辑表达式或者条件表达式。当表达式为假或者为非0时,此时编译不通过并输出对应字符串。
6.可变参数(待补充)
头文件 stdarg.h