当前位置: 首页 > news >正文

C语言笔记(第一章:C语言编程)

第一章:C语言编程

标签(空格分隔): C语言学习


本章主要内容

  1. C语言标准
  2. 标准库的概念
  3. 如何创建C程序
  4. 如何组织C程序
  5. 如何编写在屏幕上显示文字的程序

1.C语言标准

任何物品事件的使用都需要一个大家都认同的使用规则,如同游戏一样,大家需要遵守同一个游戏规则,才能更好的使用。

  1. 1989 年国际标准组织 ISO 采纳了美国国家标准协会(ANSI)对于C语言的标准化,此时C语言又被称为 ANSI C。正式发布后官方名称——ISO/IEC 9899: 1990,简称:C89/90 标准
  2. 1999 年C语言标准委员会对C语言进行了改进,正式发布了 ISO/IEC 9899: 1999,简称:C99 标准
  3. 2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899 : 2011,简称:C11 标准。

C标准的详细介绍——维基百科


2.标准库的概念

概念: 标准库定义了编写C程序时常常需要的常量、符号和函数。同时提供了基本C语言的一些可选扩展。

位置:标准库在一系列标准文件——头文件中指定,头文件的扩展名总是.h。例如: < assert.h >—定义awwert和static_asssert宏

C标准库也称为ISO C库,是用于完成诸如输入/输出处理、字符串处理、内存管理、数学计算和许多其他操作

系统服务等任务的宏、类型和函数的集合。它是在C标准中(例如C11标准)中定义的。


3.创建C程序

创建C程序有四个基本的过程

  1. 编辑
  2. 编译
  3. 链接
  4. 执行

1.编辑

编辑的过程就是创建和修改C程序的源代码——我们编写的程序指令称为源代码。

编译器:是提供了编写,管理,开发与测试的环境

也称为集成开发环境(Integrade Developmen Environment,IDE)

2.编译

编译器将源代码转换成为机器语言,并且在编译的过程中,找出并报告错误。

编译器能找出程序中很多的无效或无法识别的错误,以及结构错误。

源文件就是用汇编语言或高级语言写出来的代码保存为文件后的结果。扩展名为:.C

编译器的输出结果称为——对象代码(object code),存放对象代码的文件称为对象文件(object file)

如果程序有错误则阻止对象程序和文件的创建

如果程序没有错误则编译成功,会生成一个与源文件同名的文件

扩展名为.obj(Windows环境)/.o(Linx/UNIX环境)

3.链接

通过链接器把源文件和对象文件以及必须的代码模块组合成一个新的文件。
链接器:将源代码文件中由编译器产生的各种对象模块组合起来,再从C语言提供的程序库中添加必要的代码模块,将他们组合成一个可执行的文件。扩展名为:.exe
连接器可以检测和报告错误。

4.执行

当成功完成了上述三个阶段后,运行程序。

程序运行的流程图如下:

st=>start: 开始
e=>end: 成功
op1=>operation: <编辑>创建/修改程序源代码
op2=>operation: 源文件(.C)
op3=>operation: <编译>生成机器指令
cond1=>condition: 成功?
op4=>operation: 对象文件(.obj)
op5=>operation: <链接>链接源代码文件库等
cond2=>condition: 成功?
op6=>operation: 可执行文件(.exe)
op7=>operation: <执行>运行程序
cond3=>condition: 成功?

st->op1->op2->op3->cond1
cond1(no)->op1->op2->op3->cond1
cond1(yes)->op4->op5->cond2
cond2(no)->op1->op2->op3->cond1
cond2(yes)->op6->op7->cond3
cond3(no)->op1->op2->op3->cond1
cond3(yes)->e

相关文章:

  • sqoop使用手册--mysql配置
  • width 值 max-content、fill-available、min-content 对应作用
  • multimap详讲
  • 剑指offer-树的子结构
  • JavaScript HTML DOM
  • js提交表单错误:document.form.submit() is not a function
  • React as a UI Runtime(五、列表)
  • 如何进阶一名有竞争力的程序员?
  • 实现简单的正则表达式引擎
  • 读写配置文件模块configparser—参考杨永明博客
  • Android的WIFI局域网对讲机
  • todo: 改变字体的动画
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 翻译:Hystrix - How To Use
  • k8s应用机密信息与配置管理(九)--技术流ken
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【剑指offer】让抽象问题具体化
  • codis proxy处理流程
  • Cumulo 的 ClojureScript 模块已经成型
  • github指令
  • HomeBrew常规使用教程
  • Intervention/image 图片处理扩展包的安装和使用
  • JS数组方法汇总
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • nodejs调试方法
  • React Transition Group -- Transition 组件
  • 编写高质量JavaScript代码之并发
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 我的业余项目总结
  • 我与Jetbrains的这些年
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个项目push到多个远程Git仓库
  • Java数据解析之JSON
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ![CDATA[ ]] 是什么东东
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #HarmonyOS:Web组件的使用
  • #单片机(TB6600驱动42步进电机)
  • (2.2w字)前端单元测试之Jest详解篇
  • (HAL库版)freeRTOS移植STMF103
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (层次遍历)104. 二叉树的最大深度
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (离散数学)逻辑连接词
  • (一)Dubbo快速入门、介绍、使用
  • (转)总结使用Unity 3D优化游戏运行性能的经验