C语言扫盲
文章目录
- C版本
- C语言特征
- GCC
- printf
- 数据类型
- 函数
- 指针
- 内存管理
- void指针
- Struct结构和Union结构
- typedef
- 预处理器
- make工具
- cmake工具
- Project
- integral of sinc function
- emulator embedded system
- an 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 -std=c99 hello.c
printf
1.输出占位符
printf("%c is a",'c') //打印字符
printf("%s is a animal","")
printf("%i = 1 ",1) //打印整数
printf("%f",1.24) //打印单精度浮点数
printf("%lf",1.24) //打印双精度浮点数int a=1;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表示1,false表示0
函数
函数的参数和返回值,会自动转成函数定义里指定的类型。
C语言也是传入的是参数拷贝,如要修改对应内存值,传入内存地址进行操作
指针
int *p = NULL;
int a=1;
p=&a;//指针的重要公式
a==*(&a);
hex editor工具调试C代码时可以查看对应16进制内存地址
内存管理
C语言中全局变量存放在堆,用户自行管理,需要手动释放,否则会内存泄漏->OOM
局部变量存在栈里,函数结束后编译器自行释放,内存管理的函数用时再查,不做纪录
– malloc(), calloc(), realloc(), and free()
void指针
//void指针可跟其他类型指针转化
int a=1;
void * p=&a;
int *b=p;
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 foo
cmake工具
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/?profile=linux26
安装Linux
Virtualbox软件,下载centos7 minimal镜像安装即可
参考
【1】https://wangdoc.com/clang/
【2】https://www.cse.msu.edu/~cse251/index.html
相关文章:
C语言扫盲
文章目录 C版本C语言特征GCCprintf数据类型函数指针内存管理void指针 Struct结构和Union结构typedef预处理器make工具cmake工具Projectintegral of sinc functionemulator embedded systeman event schedule 补充在线Linux终端安装Linux参考 建议还是国外教材学习…人家的PPT比…...
视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法
LntonAIServer作为一款智能视频监控平台,集成了多种先进的视频质量诊断功能,其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…...
【笔记篇】Davinci Configurator OS模块(上)
目录 1 简介1.1 架构概览2 功能描述2.1 特性2.2 规范偏离2.2.1 API 函数的泛型偏离2.2.2 可信函数 API 偏离2.2.3 服务保护偏离2.2.4 代码保护2.2.5 SyncScheduleTable API 偏差2.2.6 CheckTask/ISRMemoryAccess API 偏差2.2.7 中断 API 偏差2.2.8 Cross Core Getter API2.2.9 …...
19.3 打镜像部署到k8s中,prometheus配置采集并在grafana看图
本节重点介绍 : 打镜像,导出镜像,传输到各个节点并导入运行该项目配置prometheus和grafana 打镜像 本地build docker build -t ink8s-pod-metrics:v1 .build过程 导出镜像 docker save ink8s-pod-metrics > ink8s-pod-metrics.tar 传输到各个node…...
如何让系统u盘重新可用
目录 引言开始操作遇到的错误 引言 我们将 u 盘制作为系统 U 盘后,U 盘就没法在电脑中正常识别出了。当装完系统,不再需要 u 盘充当系统 U 盘想要正常使用该 U 盘,这时候就需要有些操作,让这个 U 盘正常化。 上图就是充当系统盘的…...
14.安卓逆向-frida基础-编写hook脚本2
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。 工…...
车辆零部件检测和分割数据集-车体数据集-yolo格式-yolov5-yolov10可用
这些标签是用于实例分割任务中的类别,通常在汽车图像识别或自动驾驶技术中使用。以下是这些类别: back_bumper - 后保险杠back_glass - 后挡风玻璃back_left_door - 后左车门back_left_light - 后左灯back_right_door - 后右车门back_right_light - 后右…...
甄选范文“论分布式存储系统架构设计”,软考高级论文,系统架构设计师论文
论文真题 分布式存储系统(Distributed Storage System)通常将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的…...
第十四章:html和css做一个心在跳动,为你而动的表白动画
💖 让心跳加速,传递爱意 💖 在这个特别的时刻,让爱在跳动中绽放!🌟 无论是初次相遇的心动,还是陪伴多年的默契,我们的心总在为彼此跳动。就像这颗炙热的爱心,随着每一次的跳动,传递着满满的温暖与期待。 在这个浪漫的季节,让我们一同感受爱的律动!无论你是在…...
poetry安装
文章目录 前言1. 为什么pip install poetry 会造成依赖冲突1.1 全局环境依赖混淆:1.2 工具和项目之间的冲突:1.3 缺乏依赖隔离:1.4 多出很多额外依赖: 2. 不推荐pipx安装3. poetry高级安装3.1 默认安装路径3.2自定义安装 4. 安装p…...
Proteus如何添加数码管
1、打开安装好的Proteus,点击上方菜单栏中的“库”,再选择“从库选取零件”,或者在左侧元件列表中单击鼠标右键,再点击右键菜单中的“从库中挑选”选项。 2、之后在元器件库中,点击类别中的“Optoelectronics”&#…...
5 apache poi实现excel的动态下拉框功能
excel下拉框 RequestMapping("xiala")public void xiala(HttpServletResponse response){String fileName "僵尸表";try{response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharact…...
深度对比:etcd、Consul、Zookeeper 和 Nacos 作为注册中心和配置中心的优势与劣势
在现代分布式系统和微服务架构中,服务注册中心 和 配置中心 是系统稳定运行的关键组成部分。服务注册中心负责服务的动态注册与发现,而配置中心用于集中管理配置,确保系统在变化的环境中保持一致性。本文将对比 etcd、Consul、Zookeeper 和 N…...
Android webview拦截H5的接口请求并返回处理好的数据
Android webview拦截H5的接口请求并返回处理好的数据 Android 可以通过 WebView 的 shouldInterceptRequest 方法拦截到 H5 中的网络请求。这是一个 WebViewClient 中的回调方法,允许开发者在 WebView 发起网络请求时对其进行处理和修改。 具体使用方法如下&#…...
vue echarts tooltip使用动态模板
先上代码 tooltip: {// 这里是车辆iconshow: true,// trigger: "item",// backgroundColor: "transparent",appendToBody: true,textStyle: {color: "#ffffff" //设置文字颜色},formatter: (params) > {return formatHtml(params.data)},}, …...
網路本地連接沒有有效的IP配置:原因與解決方法
網路本地連接顯示“沒有有效的IP配置”。這通常意味著你的電腦無法從路由器或其他網路設備獲取有效的IP地址,從而導致無法上網。本文將從原因和解決方法兩個方面,詳細解析這個問題。 一、問題的原因 路由器或數據機問題: 路由器或數據機出…...
如何使用ssm实现基于web的学生就业管理系统的设计与实现+vue
TOC ssm726基于web的学生就业管理系统的设计与实现vue 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上…...
TCP三次握手四次挥手详解
TCP三次握手建立连接的过程: 一次握手:客户端发送带有 SYN(seqx)标志的数据包到服务端,然后客户端进入 SYN_SEND 状态,等待服务端的确认。二次握手:服务端收到 SYN 包后,发送带有 S…...
了解 如何使用同快充充电器给不同设备快速充电
在这科技发展迅速的时代,快充技术已经走进了我们生活,不得不说有了快充技术的对比,传统的充电模式已经满足不了人们对充电速度的要求。就比如用华为输出100 W快充充电器为手机充电大概需要23分钟充满100%电量,而传统的充电器则需要…...
AGI interior designer丨OPENAIGC开发者大赛高校组AI创作力奖
在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…...
免费开源钥匙建模终极指南:快速生成3D打印钥匙模型
免费开源钥匙建模终极指南:快速生成3D打印钥匙模型 【免费下载链接】keygen OpenSCAD tools for generating physical keys 项目地址: https://gitcode.com/gh_mirrors/ke/keygen 在数字化制造时代,开源钥匙建模工具Keygen为技术爱好者和实践者提…...
Ollama安装路径优化:从C盘迁移到D盘的完整指南
1. 为什么需要迁移Ollama到D盘? 很多AI开发者在Windows系统上初次安装Ollama时,都会遇到一个头疼的问题——默认安装路径在C盘。随着模型文件的不断下载和项目积累,C盘空间很快就会被占满。我自己就经历过C盘爆红的尴尬,系统卡顿不…...
微信小程序蓝牙打印中文乱码?手把手教你GBK编码转换(附完整Demo)
微信小程序蓝牙打印中文乱码终极解决方案:从编码原理到完整实现 蓝牙打印机在零售、餐饮等行业的应用越来越广泛,而微信小程序作为轻量级应用平台,与蓝牙打印机的结合为商家提供了便捷的移动打印方案。但在实际开发中,开发者经常会…...
开源串流新选择:用Sunshine打造跨设备游戏共享系统
开源串流新选择:用Sunshine打造跨设备游戏共享系统 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine …...
OpCore Simplify:三步搞定黑苹果EFI配置的智能工具
OpCore Simplify:三步搞定黑苹果EFI配置的智能工具 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果的复杂EFI配置而烦恼吗&am…...
如何突破原神60帧限制?genshin-fps-unlock带来的视觉体验升级
如何突破原神60帧限制?genshin-fps-unlock带来的视觉体验升级 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 3大核心收益:更高帧率、更流畅操作、零风险体验 问…...
终极RippleEffect测试指南:5步确保Android波纹动画质量的完整策略
终极RippleEffect测试指南:5步确保Android波纹动画质量的完整策略 【免费下载链接】RippleEffect Implementation of Ripple effect from Material Design for Android API 9 项目地址: https://gitcode.com/gh_mirrors/ri/RippleEffect RippleEffect是一款为…...
Live Avatar素材准备全攻略:选择什么样的图片和音频效果最好
Live Avatar素材准备全攻略:选择什么样的图片和音频效果最好 1. 引言 1.1 数字人生成中的素材重要性 在数字人生成过程中,输入素材的质量直接影响最终输出效果。Live Avatar作为阿里联合高校开源的高质量数字人模型,虽然技术先进ÿ…...
如何免费快速转换音频格式:fre:ac音频转换器完整指南
如何免费快速转换音频格式:fre:ac音频转换器完整指南 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 想要高效处理音频文件却不想花钱购买专业软件?fre:ac音频转换器是您的最佳选…...
MAD与标准差:鲁棒统计中的抗噪利器
1. 为什么我们需要抗噪统计量? 在日常数据分析中,我们经常会遇到一些"不听话"的数据点。比如分析员工薪资时突然冒出几个高管的天价年薪,或者测量温度时混入几个明显错误的极端值。这时候如果直接用传统的标准差来计算离散程度&…...
