网站推广方案有哪些,网站制作html代码,珠海模板建站公司,电商网站的功能文章目录 C版本C语言特征GCCprintf数据类型函数指针内存管理void指针 Struct结构和Union结构typedef预处理器make工具cmake工具Projectintegral of sinc functionemulator embedded systeman event schedule 补充在线Linux终端安装Linux参考 建议还是国外教材学习…人家的PPT比… 文章目录 C版本C语言特征GCCprintf数据类型函数指针内存管理void指针 Struct结构和Union结构typedef预处理器make工具cmake工具Projectintegral of sinc functionemulator embedded systeman event schedule 补充在线Linux终端安装Linux参考 建议还是国外教材学习…人家的PPT比国内的好太多了… C版本
C90 -C99- C11-C17 -C23
C语言特征
面向过程编译型语言,源文件后缀.h或者.c .s为汇编代码
GCC
C语言的编译器可编译.c文件为二进制可执行文件 文件转化如下 .c-.i-.s-.o-可执行二进制文件
补充:linux 系统下.a文件为静态库文件.so 为动态库文件。等同于windows 里的.dll 文件
//指定用C99的版本编译hello.c文件
$ gcc -stdc99 hello.cprintf
1.输出占位符
printf(%c is a,c) //打印字符
printf(%s is a animal,)
printf(%i 1 ,1) //打印整数
printf(%f,1.24) //打印单精度浮点数
printf(%lf,1.24) //打印双精度浮点数int a1;int *p a;
printf(%p,p) //打印指针
printf(%zd,sizeof(1))//打印sizeof类型2.限定输出位数
// 输出 hello
printf(%.5s\n, hello world);
数据类型
unsigned 代表无负数类型默认signed
char
short,int,long
float和double
char[]和 char*“asd”
C里无布尔类型C99 标准添加了类型_Bool用1表示真0表示假实际还是整数类型后续stdbool.h 里定义bool类型true表示1false表示0
函数
函数的参数和返回值会自动转成函数定义里指定的类型。
C语言也是传入的是参数拷贝如要修改对应内存值传入内存地址进行操作
指针
int *p NULL;
int a1;
pa;//指针的重要公式
a*(a);hex editor工具调试C代码时可以查看对应16进制内存地址
内存管理
C语言中全局变量存放在堆用户自行管理需要手动释放否则会内存泄漏-OOM
局部变量存在栈里函数结束后编译器自行释放内存管理的函数用时再查不做纪录
– malloc(), calloc(), realloc(), and free()
void指针
//void指针可跟其他类型指针转化
int a1;
void * pa;
int *bp;
Struct结构和Union结构 struct apple{char[] name;int index;
} f1//后写入的属性会覆盖前面的属性union结构实际只有一个属性
union apple{int name;double number;
}typedef
typedef unsigned char BYTE;预处理器
#开头
#define MD 1 //宏定义
#undef //取消宏定义/**
*预定义宏可以直接用
**/
__DATE__编译日期格式为“Mmm dd yyyy”的字符串比如 Nov 23 2021。
__TIME__编译时间格式为“hh:mm:ss”。
__FILE__当前文件名。
__LINE__当前行号。
__func__当前正在执行的函数名。该预定义宏必须在函数作用域使用。
__STDC__如果被设为1表示当前编译器遵循 C 标准。
__STDC_HOSTED__如果被设为1表示当前编译器可以提供完整的标准库否则被设为0嵌入式系统的标准库常常是不完整的。
__STDC_VERSION__编译所使用的 C 语言版本是一个格式为yyyymmL的长整数C99 版本为“199901L”C11 版本为“201112L”C17 版本为“201710L”。make工具
通过makefile文件搜索编译配置进行自动化编译的工具可以只编译有变动的文件然后链接即可链接比编译快的多 foo: foo.o bar.ogcc -o foo foo.o bar.ofoo.o: bar.h foo.cgcc -c foo.cbar.o: bar.h bar.cgcc -c bar.c$ make foo.o# or
$ make bar.o# or
$ make foocmake工具
cmake不是自动化编译工具是开源的跨平台自动化建构系统写cmakelist.txt文件生成不同自动化编译工具需要的配置文件如make工具需要的makefile然后执行make工具进行编译 Project
https://gitee.com/its-ah-xiao/c_project
integral of sinc function
emulator embedded system
an event schedule
补充在线Linux终端
https://copy.sh/v86/?profilelinux26
安装Linux
Virtualbox软件下载centos7 minimal镜像安装即可
参考
【1】https://wangdoc.com/clang/
【2】https://www.cse.msu.edu/~cse251/index.html