C编程参考信息
常用函数头文件
| 函数名称 | 头文件名称 |
|---|---|
| malloc,calloc,free | <stdlib.h> |
| errno | <errno.h> |
| assert | <assert.h> |
| size_t,true,false | <stddef.h> |
| fopen fclose fwrite 等文件操作相关 | <stdio.h> |
| memcpy相关,strncpy字符串操作相关 | <string.h> |
| strerror 返回指定错误码 | <string.h> |
| va_start,va_end 等变参函数 | <stdarg.h> |
| int8_t,uint8_t,uint16_t | <stdint.h> |
printf 格式控制符参考
| 格式控制符 | 功能说明 |
|---|---|
| %c | 输出单一的字符 |
| %o %#o | 将整数转换为八进制,%#o 打印八进制前面加0 |
| %u | 打印十进制无符号数 |
| %% | 打印%这个符号 |
| %x,%X, %#x | 打印小写16进制数和大写16进制数,%#o 打印十六进制前面加0x |
| %d,%ld | 以十进制、有符号的形式输出int、long 类型的整数 |
| %f | 按照常规的浮点格式打印,精度字段决定小数点后面位数,缺省值是6 |
| %p | 打印出一个指针值 |
| m.n | m.n:m指域宽,即对应的输出项在输出设备上所占的字符数;N指精度用于说明输出的实型数的小数位数指定为n,隐含的精度为n=6位 |
| m.n | m 代表的占用的列数,包括小数点和小数的位数,不够前面补空格,超出m列不做处理,n表示小数点的位数,不足后面补0 |
| %s | 打印出一个字符串 |
| %e %E | 参数根据指数形式打印,缺省值是6 |
| %g %G | 以十进制和指数中较短的形式输出 float、double 类型的小数,并且小数部分的最后不会添加多余的 0;如果 g 小写,那么当以指数形式输出时 e 也小写;如果 G 大写,那么当以指数形式输出时 E 也大写 |
printf 中规定的特殊字符
| 特殊字符 | 作用 |
|---|---|
| \n | 换行操作 |
| \f | 清屏并且换页 |
| \r | 回车 |
| \t | tab 字符 |
| \xhh | 16进制表示的ASCII码,其中h 可以用0~f中的一个代替 |
void testprintfOperation()
{
printf("char demo %c %c \n", 'A', 48);
printf("int demo %d,%ld \n", 2018, 20182018ul);
printf("int demo %-3d,%3ld \n", 2018, 20182018ul);
printf("\t speical char demo \n");
printf("float demo %f %3.3f %3.9f\n", 1 / 3.0, 1 / 3.0, 1 / 3.0); // .3 means only save 3 ponit number
printf("Hex : %x %#x,DEC: %d,eight : %o %#o\n", 100, 100, 100, 100, 100);
printf("float demo demo %e %E \n", 1 / 3.0, 1 / 3.0);
}
输出结果:
char demo A 0
int demo 2018,20182018
int demo 2018,20182018
speical char demo
float demo 0.333333 0.333 0.333333333
Hex : 64 0x64,DEC: 100,eight : 144 0144
float demo demo 3.333333e-01 3.333333E-01
C 语言标准演进
| C语言标准 | 说明 |
|---|---|
| K&R C | 1987年提出,是许多编译器的最低标准要求,许多老旧的编译仍然运行 K&R C 的标准 |
| ANSI C&ISO C | 现在被几乎所有广泛使用的编译器支持 |
| C89 和 C90 | 美国国家标准协会(American National Standards Institute,简称 ANSI)推出C语言和C标准库的标准 |
| C99 | C语言的标准化委员会在1999年正式发布 |
| C11 | 2011年,C语言标准委员会正式发布 |
C语言中重要知识点
| 关键知识点 | 说明 |
|---|---|
| 关键字 | 32个关键字 |
| 预处理器 | 文件包含,宏定义,编译与处理等 |
| 表达式 | NA |
| 变参函数 | va_start,va_arg 等 |
| 常用位运算 | 对齐,清除某些位等 |
| 日期和时间操作 | NA |
| 常用库介绍 | string.h stdint.h 等 |
| 常用操作技巧 | NA |
C99 标准中,C语言关键字共34个
| 关键字 | 说明 |
|---|---|
| register,auto,char,float,int,long,short,double | 8个 基本的整形和浮点型关键字 |
| const,extern,signed,unsigned,static,volatile | 6个 重要类型修饰符关键字 |
| if,else,while,for,switch,continue,break,case,default,do,goto | 11个 流程控制关键字(顺序,分支,循环) |
| void,return,inline(C99 起), | 3个 函数相关关键字 |
| struct,enum,union | 3个 构造类型关键字 |
| sizeof | 1个 获取字节大小关键字 |
| typedef | 1个 重命名类型关键字 |
| restrict | 1个 指针类型限定关键字 |
编程规范
匈牙利命名法
开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写 ex: int iMyAge; i是int类型的缩写; char cMyName[10]; c是char类型的缩写; float fManHeight;f是float类型的缩写;
| 前缀名称 | 对应关系 |
|---|---|
| a | array |
| b | boolean |
| by | byte |
| c | char |
| h | Handle |
| p | pointer |
| st | struct |
| e | enum |
驼峰式命名法
第一个单词首字母小写,后面其他单词首字母大写 比如: int myAge; char myName[10]; float manHeight;
头文件注释和函数注释模板
头文件注释
/*******************************************************************************
* Copyright(C),2022,OpenSource Project
* @file Name
* @author
* @version V1.0.0
* @date
* @brief
* @History
*******************************************************************************
函数注释
/****************************************************
* @functionName
* @brief
* @param
* @retval
****************************************************/
常用缩写
| 缩写 | 说明 |
|---|---|
| tmp | temp |
| flg | flag |
| staticstic | stat |
| inc/dec | increament,decrement |
| msg | message |
| staticstic | stat |
| len | length |
| id | NA |
| res/ret | result,returnvalue |
结构体,枚举类型定义格式
typedef struct MI_AAA_StructureName_s
{
int aaa;
int bbb;
} MI_AAA_StructureName_t;
typedef struct MI_OSD_InitRegion_s
{
int aaa;
int bbb;
} MI_OSD_InitRegion_t;
typedef enum
{
E_ MI_OSD_ENABLE,
E_ MI_OSD_DISABLE
} MI_OSD_InitRegion_e;
一些有意义的名词缩写 add /remove begin / end create / destroy insert /delete first /last get /release increment /decrement put/get lock /unlock open /close min /max old / new start/ stop next / previous source / destination cut / paste send / receive show / hide
create/destroy begin/end start/stop open/close add/remove insert /delete
lock/unlock min/max show/hide increment /decrement next/previous send/receive set/get src/dst
Review History
| 日期 | 说明 |
|---|---|
| 2022/10/31 | 合并处理 |
| 2023/2/17 | 转移掘金 |