当前位置: 首页 > 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
  • [译]CSS 居中(Center)方法大合集
  • chrome扩展demo1-小时钟
  • const let
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Material Design
  • node和express搭建代理服务器(源码)
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue-loader 源码解析系列之 selector
  • VuePress 静态网站生成
  • webpack+react项目初体验——记录我的webpack环境配置
  • yii2中session跨域名的问题
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 记录一下第一次使用npm
  • 简单实现一个textarea自适应高度
  • 探索 JS 中的模块化
  •  一套莫尔斯电报听写、翻译系统
  • #pragma once与条件编译
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)PySpark3:SparkSQL编程
  • (二)windows配置JDK环境
  • (附源码)ssm高校实验室 毕业设计 800008
  • (九)c52学习之旅-定时器
  • (论文阅读40-45)图像描述1
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (算法二)滑动窗口
  • (转) Face-Resources
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)母版页和相对路径
  • (转载)利用webkit抓取动态网页和链接
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 命令行参数包含应用程序路径吗?
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually