初识C语言(mac版)

发布时间:2026/10/17 2:49:45

初识C语言(mac版) 个人学习的心得记录和知识梳理1. C语言是什么?C语言是一门计算机语言,是人和计算机交流的语言人和人交流使用的是自然语言,如:汉语英语日语那人和计算机是怎么交流的呢?使用计算机语言;人是通过计算机语言写的程序,给计算机下达指令,让计算机来帮我们完成各种工作C语言就是众多计算机语言中的一种,当然C/Java/Go/Python都是计算机语言汉语/英语 → 自然语言C/C/Java等 → 计算机语言2. C语言的历史和辉煌2.1 历史C 语言最初是作为 Unix 系统的开发工具而发明的1969年贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了Unix操作系统。Unix最初是用汇编语言写的为了移植到其他计算机肯·汤普森在BCPL语言的基础上发明了B语言。1972年丹尼斯·里奇和布莱恩·柯林汉Brian Kernighan又在B语言的基础上重新设计了一种新语言这种新语言取代了B语言所以称为C语言。1973年整个Unix系统使用C语言重写。此后这种语言开始快速流传广泛用于各种操作系统和系统软件的开发。1988年美国国家标准协会ANSI正式将C语言标准化标志着C语言开始稳定和规范化。时至今日C语言还是在广泛的使用在计算机语言的排行榜上霸占前三名。Dennis Ritchie1941‑2011Bell LabsC语言之父2.2 C语言的活跃度TIOBE Programming Community IndexTIOBE 编程社区指数是衡量编程语言流行程度的指标参考链接:shturl.cc/zehINAkON5v1pFTqiKoXYw9I在偏底层的软硬件开发中,比如:系统软件开发驱动开发嵌入式开发,C语言当仁不让Linux内核、FreeRTOS‑Kernel、redis大量代码由C语言实现mysql‑server也有部分C语言代码。3. Mac学习C语言需要什么工具?Mac系统底层基于Unix原生自带clang编译器不需要额外安装编译器。C语言是一门编译型计算机语言,C语言源代码都是文本文件,C语言代码存放在 .c 为后缀的文件中。文本文件本身无法执行必须通过编译器和链接器的处理生成可执行程序Mac下生成的不是.exe是Unix可执行二进制程序才能在计算机上执行完成任务。3.1 翻译工具编译器链接器• Windows.c源文件 →编译器→.obj目标文件 →链接器→.exe可执行程序• Mac.c源文件 →clang编译器→.o目标文件 →链接器→Unix可执行程序无后缀1. 每个源文件(.c)单独经过编译器处理生成对应的目标文件Mac下后缀为.o2. 多个目标文件和库文件经过链接器处理生成对应的可执行程序Mac没有exe后缀Mac终端编译示例clang test.c -o test ./test3.2 编译器对比编译器特点维护方GCC跨平台、成熟、优化稳定、支持语言多开源社区维护Clang基于 LLVM错误提示更友好编译速度快macOS 默认内置编译器苹果Mac上自带clang不需要手动下载安装编译器。直接使用clang命令行编译对新手不够友好学习成本高所以我们可以使用集成开发环境IDE。集成开发环境(IDE)提供程序开发环境的应用程序一般包括代码编辑器、编译器、调试器和图形用户界面集成代码编写、代码分析、代码编译、代码调试、构建等功能。Mac常用IDE1. XCode苹果官方IDE内置clang编译器完全免费Mac专属App Store可直接下载。2. Clion跨平台默认使用CMake构建编译器使用系统自带clang学生/个人可以申请免费授权。3. VS Code本身只是编辑器需要安装C/C插件使用系统自带clang搭建环境适合有基础的同学初学者不优先推荐。❗Mac不要使用Dev‑C、CodeBlocks这两个工具对Mac适配很差不推荐。工具选择建议• 方案1推荐新手XCodeMac原生免费自带clang调试强大。• 方案2Clion界面美观跨平台适合后续C/C长期学习。• 方案3VS Code clang插件适合已经懂一点编译原理的同学。XCode简单使用提示XCode新建项目选择「macOS‑Command Line Tool」语言选择C即可编写C语言代码。。4. 第一个C语言程序4.1 Mac IDE中项目、源文件、头文件介绍不管XCode还是Clion写C语言都要先创建项目。• .c后缀源文件存放C语言实现代码• .h后缀头文件存放函数声明、宏定义等Mac磁盘上文件直接显示test.c、test.h没有Windows下的vcxproj工程文件。XCode工程后缀为.xcodeproj。4.2 第一个C语言程序#include stdio.h int main() { printf(hello C\n); return 0; }4.3 main函数每个 C 语言程序不管有多少行代码,都是从main函数开始执行的main函数是程序的入口也叫主函数。main前面的int是integer的缩写代表整型表示main结束返回一个整数所以末尾写return 0;与之呼应。main函数基础模板int main() { return 0; }要点• main函数是程序唯一入口• 一个项目中只能有且仅有一个main函数• 项目可以有多个.c源文件但是只能出现一处main新手高频错误• main拼写错误写成mian• main后面()括号漏写• 代码使用中文符号中文括号、中文分号Mac输入法很容易误输入中文标点要格外注意• 语句末尾忘记写分号;4.4 关键字为什么int、return可以直接使用C语言预留一批特殊符号叫做关键字保留字• 关键字拥有特殊含义属于C语言内置• 我们自己定义变量名字不能和关键字重名• 不能自己创造新关键字C语言32个基础关键字auto break case char const externcontinue default do double else enumfloat for goto if static intlong register return short signed sizeofstruct switch typedef union unsigned void volatile whileC99新增inline 、restrict 、_Bool 、_Complex 、_Imaginary参考文档https://zh.cppreference.com/c/keyword4.5 库函数和头文件printf(hello C\n);printf属于库函数作用向屏幕打印输出内容。双引号包裹的是字符串\n代表换行。区分• abc 双引号字符串• a 单引号单个字符printf支持占位符打印不同类型数据printf(%d\n, 100 ); //打印整型printf(%c\n, q); //打印字符printf(%f\n, 3.14); //打印浮点小数%d、%c、%f是占位符会被后面的数据替换。使用printf必须引入头文件#include stdio.hstdio standard input output标准输入输出。所有输入输出相关函数都需要这个头文件。什么是库函数1. 提前写好、经过测试打包成库可以直接调用的函数属于C标准库不是语言语法本身。2. 一组库函数声明写在同一个.h头文件调用库函数就要#include引入对应头文件。3. 库函数参考文档https://cplusplus.com/reference/clibrary/4.6 注释注释作用• 提高代码可读性方便自己和他人阅读理解• 调试时临时屏蔽一段代码两种注释写法1. /* */ 多行注释可以跨多行不能嵌套遇到第一个*/就结束/* 多行注释 可以写大段说明 */2. //单行注释从//开始到本行行尾全部注释C99标准支持Mac clang完全支持printf(%d,100); //行尾注释打印数字100// printf(这一行被注释不会运行);
延伸阅读

更多相关文章

2026/10/17 2:49:45

面试官问:AI十分钟能写完的代码,你为什么要学五年?

摘要:2026年9月,一位5年经验的Java工程师在大厂终面被问:“你简历上这些技术栈,AI十分钟就能写出生产级代码。你花五年学的东西,价值到底在哪?”他答不上来。评论区几百条回复几乎全是同一个意思&#xff1…

2026/10/17 4:14:50

AI驱动的企业数字孪生:从仿真复现到决策优化

1. 为什么企业数字孪生必须叠加AI:传统仿真模型的三个死穴前两年我在一家制造企业做产线仿真项目,当时用传统数字孪生工具给车间搭了一个高精度三维模型,设备运动逻辑、节拍、缓存区全都对上了,模型跑起来跟现场监控画面几乎一帧不…

2026/10/17 4:14:50

从思维链到LoRA:DeepSeek应用手册核心机制全解读

简介:一份面向DeepSeek用户的实操型应用手册,聚焦多模型协同、私有数据集接入与参数理解等核心主题,适合深度学习初学者、自然语言处理开发者和需要借助大模型提升效率的内容创作者。手册围绕R1与V3的分工配合、文件上传类型、联网搜索时机、…

2026/10/17 4:14:50

FreeBSD 9.2 DPI系统PanabitFREE深度解析与实战部署

简介:PanabitFREE_SANGUOr10_20150513_FreeBSD9.2_dev.tar.gz 是一款面向网络管理员与开源系统开发者的深度流量审计与策略管控系统源码包,基于稳定高效的 FreeBSD 9.2 平台构建,专为中小企业及实验室环境提供免费、可定制的网络行为分析、带…

2026/10/17 4:14:50

AI指导AI跨领域创作全流程拆解:从一句诗到一条视频

要说这一年我在内容创作上最大的感受,就是AI工具链正在从一个“只会接活儿的打字员”,变成真正能和我一起开脑洞、做判断、改方案的创作搭子。尤其最近我把一个跨领域创作项目完整跑了一遍,整个流程从灵感到成片,几乎每一步都有AI…

2026/10/17 4:14:50

AI驱动数字孪生:从可视化大屏到决策优化的实战指南

1. 项目概述:数字孪生不是新概念,但AI驱动让价值彻底变了这两年“数字孪生”被说烂了,随便一个可视化大屏厂商都敢在自己的产品上贴这个标签。但如果你真在企业里做过数字化转型项目,就会明白:数字孪生的价值根本不在于…

2026/10/17 4:09:50

原生JS自定义右键菜单:从原理到实战的完整实现指南

1. 为什么2021年还在折腾自定义右键菜单浏览器默认的右键菜单从诞生那天起就没怎么变过——复制、粘贴、检查元素,翻来覆去就那几项。对于一个功能稍微复杂点的Web应用来说,这东西既占地方又帮不上忙。2021年那会儿,我手上正好有个在线协作类…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑