C语言第二节概述
学前提醒
- 其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言
- iOS开发需要学习的主要程序设计语言有:C语言、C++、Objective-C,其中C++、Objective-C都是以C语言为基础,从C语言衍生出来的。因此,C语言是开发iOS软件的基础。
- 从现在开始,沉下心来学习传说中的C语言,学习它的语法
- 正式学习之前,先提醒一句:学习一门语言的语法是比较枯燥的事,很像是在学习1+1等于几,不可能在学习C语言语法过程中就能马上做出一些好看的iPhone软件界面效果
- 大家要沉得住气,所谓苦尽甘来,没有语法的积累,如何能编写出好看的界面呢?
计算机和软件常识
计算机运行原理
- 硬件基本组成:硬盘、内存、CPU
- 各个部件之间的运作协调(右图)
计算机只能识别0和1
- 0和1组成的指令
- 0和1组成的数据
计算机和软件的联系
- 软件的基本概念:指令的集合
- 软件的安装运行过程
- 安装在硬盘
- 运行在内存
- 为什么要开发软件:写出能控制计算机的指令
计算机语言
- 一门跟计算机打交道的语言
- 方便写出一连串的指令
计算机语言发展史
机器语言
- 简介:所有代码里面只有0和1,每一条指令称为"机器指令"
- 优点
- 代码能被计算机直接识别,直接对硬件产生作用,程序的执行效率非常高
- 能直接访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等
- 缺点
- 程序全是些0和1的指令代码,可读性差,还容易出错
- 对硬件的依赖性很强,因此不同型号计算机的机器语言又不一样。也就是说,如果2台不同型号的机器想实现一样的功能,需要编写2套完全不同的代码
- 要熟记所用计算机的全部指令和指令的涵义,指令又多又难记
- 使用场合
综上所述,机器语言很难掌握和推广,现在除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了
汇编语言
- 简介:用英文单词等符号代替机器指令
- 优点
- 像机器语言一样,可以直接访问、控制计算机的各种硬件设备
- 占用内存少,执行速度快
- 缺点
- 不同的机器有不同的汇编语言语法和编译器,代码缺乏可移植性,也就是说,一个程序只能在一种机器上运行,换到其他机器上就不能运行
- 符号非常多、难记,即使是完成简单的功能也需要大量的汇编语言代码,很容易产生BUG,难于调试
- 必须对硬件非常了解,开发效率很低,周期长且单调
- 使用场合
- 操作系统内核、驱动程序、单片机程序
- 软件的加密、解密、破解
- 病毒的制作、防治
- 程序的调试、分析
高级语言
- 简介:接近自然语言
- 优点
- 简单、易用、易于理解,语法和结构类似于普通英文
- 远离对硬件的直接操作,使得一般人经过学习之后都可以编程,而不用太熟悉硬件知识
- 一个程序还可以在不同的机器上运行,具有可移植性
- 缺点
- 程序不能直接被计算机识别,需要经编译器翻译成二进制指令后,才能运行到计算机上
- 种类:C语言、C++、C#、Java、Objective-C等
三种语言的对比
分别用机器语言、汇编语言、C语言(高级语言)来写一个计算1+1的程序
- 机器语言:简直是天书!!!
10111000 00000001
00000000 00000101
00000001 00000000
- 汇编语言:可读性稍微好一点,但是麻烦
MOV AX,1
ADD AX,1
- C语言:精简、通俗易懂
1+1
C语言简介
先学习C语言的原因
- OC基于C
- OC跟C的思想和语法很多地方不太一样,而且OC能和C混用
- C是所有编程语言中的经典,很多高级语言都是从C语言中衍生出来的,比如C++、C#、Objective-C等
简史
- C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作系统的基础)
- 随着UNIX操作系统的成功,C语言也得到了大幅度地推广,被先后使用到大、中、小、微型主机上,至今还是世界上最流行、使用最广泛的高级程序设计语言之一
- C语言是一门面向过程的语言,非面向对象的语言
特点
- 丰富的运算符
- 丰富的数据类型
- 可以直接操作硬件
- 高效的目标代码
- 可移植性好
主要用途
- 编写系统软件、图形处理、单片机程序、嵌入式系统开发
- 编写游戏外挂
- 编写android程序
- 编写iOS程序
……
版本问题
- 1983年美国国家标准局(American National Standards Institute,简称ANSI)成立了一个委员会,开始制定C语言标准的工作
- 1989年C语言标准被批准,这个版本的C语言标准通常被称为ANSI C
- 1999年,国际标准化组织ISO又对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,命名为C99
- 2011年12月8日,ISO正式公布C语言新的国际标准草案:C11
C语言第二节概述的更多相关文章
- Python黑帽编程 2.0 第二章概述
Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...
- 第二节:Web前端-ASP.NET之C#基础
第二节:Web前端-ASP.NET之C#基础 学习ASP.NET,要掌握学习语言,控件等技能, <div style="text-align: center; line-height: ...
- centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /dev/tty(0,6) 模拟终端 /dev/pts/# grub-md5-crypt 给grub加密码 initrd 第二节课
centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /d ...
- Gradle2.0用户指南翻译——第二章. 概述
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...
- CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第二节
原文链接 第二节:第一个内核 Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个国家级的实验室进行大型并 ...
- android内部培训视频_第二节 布局基础
第二节:布局入门 一.线性布局 需要掌握的属性: 1.orientation:排列方式 vertical:垂直 Horizontal:水平 2.weight:水平布局的权重 3.gravity:子控件 ...
- seajs第二节,seajs各模块依赖关系
index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- VUE2.0实现购物车和地址选配功能学习第二节
第二节 创建VUE实例 购物车项目计划: 1.创建一个vue实例 2.通过v-for指令渲染产品数据 3.使用filter对金额和图片进行格式化 4.使用v-on实现产品金额动态计算 5.综合演示 ① ...
随机推荐
- iOS开发相关图书推荐
Objective-C编程之道:iOS设计模式解析 作 者 [美] Carlo Chung 著:刘威 译 出 版 社 人民邮电出版社 出版时间 2011-11-01 版 次 1 页 ...
- 使用Google Chart API绘制组合图
Google Chart API 绘图 组合图作者:方倍工作室 地址: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN& ...
- Ruby多字节字符的设计
Perl.Python的多字节字符处理方式是UCS(Universal Code Set),Ruby的多字节字符处理方式是CSI(Code Set Independent).UCS的做法是,不管你读取 ...
- algorithm@ Shortest Path in Directed Acyclic Graph (O(|V|+|E|) time)
Given a Weighted Directed Acyclic Graph and a source vertex in the graph, find the shortest paths fr ...
- 怎么在 html 中 动态的加载一个 script
var script = document.createElement( 'script' );script.type = 'text/javascript';script.src = bodyStr ...
- My First Blog on cnblogs (现代程序设计 Homework-01)
Hello CNBLOGS!Hello Everyone! 这是我的第一篇blog,所以这也是一篇试验性的blog. 这个学期我和很多同学一样选修了邹欣老师的现代程序设计这门专业课.第一次看到使用Gi ...
- Struts2通配符映射
1.一个Web 应用可能有成百上千个 action 声明. 可以利用 struts 提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系 2.通配符映射规则 –若找到多个匹配, 没有通配符的 ...
- DataSnap与FireDAC三层
相交资料: http://blog.csdn.net/shuaihj/article/details/6129131http://www.cnblogs.com/hnxxcxg/p/4007876.h ...
- hdu 1151 Air Raid(二分图最小路径覆盖)
http://acm.hdu.edu.cn/showproblem.php?pid=1151 Air Raid Time Limit: 1000MS Memory Limit: 10000K To ...
- eclipse svn切换账号登陆问题
1.当一个人有权限访问文件代码,而另一个账号无法访问该文件代码,要在eclipse上切换账号登陆有权限的账号时,eclipse会用缓存的账号,不会弹出从新输入新账号的窗口. 这样该怎么解决呢? 关闭e ...