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.综合演示 ① ...
随机推荐
- 【暑假】[基本数据结构]根据in_order与post_order构树
Tree Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Des ...
- 给MyEclipse 10增加SVN功能
1.在myeclipse的安装目录下 myeclipse 10文件夹下的 dropins文件夹新建一个文件夹 svn. 2.然后下载SVN插件:svn插件网站:http://subclipse.tig ...
- 【更新sql server数据项的长度】////【复制数据到另一张表中】
由于设计时没考虑周全,之后发现长度不够,手动修改又不可以... 重新新建也不行啊>>>>>>>>>里面的数据怎么办 so:直接用代码了.... a ...
- Spark系列(九)DAGScheduler工作原理
以wordcount为示例进行深入分析 1 33 ) { 46 logInfo("Submitting " + tasks.size + " missi ...
- 机器学习框架Scikit Learn的学习
一 安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...
- CalendarUtil
package ch.makery.address.util; import java.text.ParseException; import java.text.SimpleDateFormat; ...
- awk的二维数组
awk是不支持二维数组的,它的底层是一维数组,将两个key拼接为一维数组的key. 如下是其初始化和遍历 awk 'BEGIN{ for(i=0;i< 3; ++i) for(j = 0; j ...
- Linux rpm 命令参数
rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. 常用命令组合 ...
- linux下登陆用户的行为信息—w和who命令详解
查看用户的操作系统管理员若想知道某一时刻用户的行为,只需要输入命令w 即可,在SHELL终端中输入如下命令: [root@localhost ~]# w 可以看到执行w命令及显示结果. 命令信息含义上 ...
- 使用 DllImport 属性
本主题说明 DllImport 属性的常见用法.第一节讨论使用 DllImport 从托管应用程序调用本机代码的优点.第二节集中讨论封送处理和 DllImport 属性的各个方面. 从托管应用程序调用 ...