001-iOS开发前奏-C语言笔记
001-iOS开发前奏-C语言笔记
学习目标
1.【了解】操作系统
2.【了解】应用软件
3.【了解】操作系统的分类和市场占有份额
4.【了解】iOS操作系统
5.【了解】应用软件开发的分类
6.【了解】UNIX常用命令
7.【掌握】如何开发第一个C语言程序
一、操作系统
我们的计算机是由很多种硬件设备组成的,比如CPU、内存、硬盘、网卡、主板、声卡.......如果计算机只是仅仅有这些硬件设备,这样能不能正常使用?
CPU:负责计算、处理数据
内存:存储数据 (临时)
硬盘:存储数据 (永久)
网卡:接收、发送网络数据
声卡:输出声音信号
..........
但是,是谁让CPU去处理数据?是谁让内存去存储数据?所以计算机要正常使用必须要有一个“老大”(操作系统)来管理、协调计算机各种硬件之间和谐的工作。
计算机的作用:帮助人类做各种各样的事情。如何让计算机帮助我们做事情?我们必须要使用计算机能够明白的语言和方式去和它沟通交流,当它听懂以后,就会按照我们的要求做事情。计算机设备从诞生至今,只能听懂像 010101110010101 这样的二进制语言,也叫做机器语言。
操作系统的作用:是一个直接运行在计算机设备之上的软件,用来负责管理、协调计算机各个硬件的工作。并且将底层的复杂操作封装为了1个相对较为简单的操作(接口)。
二、应用软件
软件就是根据操作系统提供的接口,把这些接口按照一定的顺序组合起来完成1个特定的功能,这就是应用软件。操作系统他本身也是一个软件,不过是一个底层软件,因为它直接和硬件打交道。
计算机硬件设备、操作系统、应用软件之间的关系
最底层的是硬件设备,操作系统是允许运行在硬件设备之上的,应用软件是允许运行在操作系统之上的。
注意:
1. 不同的操作系统封装的接口是不一样的。
2. 同1个应用软件,是不可能允许运行在多个操作系统之上的。
开发应用软件的一般步骤:
1. 明白操作系统提供了哪些接口。
2. 将这些功能有序的组合起来,完成我们特定的功能。
三、操作系统的分类和市场占有份额
运行在PC(个人电脑)上的操作系统
Windows:90%
Apple:OS X 7%
Linux:3%
......
运行在服务器上的操作系统
Windows Server:20%
Linux:80%
......
运行在移动设备上的操作系统
Google的Android:70%
Apple的iOS:25%
Windows:5%
......
四、iOS操作系统
iOS是一个操作系统,只能运行在iPhone、iPad等苹果公司生产的设备上。OS(Operating System)也就是操作系统的意思,iOS的i字母是苹果命名产品的惯用前缀,并且是小写。iOS系统刚开始是叫iPhone OS,不过到了后来,这个操作系统可以运行在其他的设备之上,所以才改名叫iOS。
iOS开发就是开发运行在iOS系统之上的软件,所以iOS开发是属于移动开发。并且因为iOS是苹果移动设备专用的操作系统,iOS开发人员大家喜欢叫iOS攻城狮,大家觉得程序员听起来比较屌丝。
五、应用软件开发的分类
桌面软件开发:是1个独立的窗口程序。
Web开发:程序的运行要依赖于浏览器,Web应用程序开发,也就是做网站。
移动开发:开发基于移动设备的软件。
开发程序的语言
机器语言:就是01010100101010这样的二进制,能直接被计算机识别。
汇编语言:使用单词和助记符编程的程序,学习难度高,可移植性很差。
高级语言:使用人类的英文单词来编写程序,比如if(xxxx)这样的条件判断语句,学习起来相对来说比较容易。不过高级语言与硬件的直接交互不明显。
高级语言的一般编写步骤
1.使用单词来编写源代码。
2.使用编译器将源代码翻译为机器语言。
3.再将机器语言交给计算机运行。
终端的作用:可以设置系统,可以设置鼠标做不了的事情。并且某些程序的执行,必须要依赖于终端才可以。
六、UNIX常用命令

|
1
|
Macbook:~itcast$pwd
|
可以显示当前终端程序的工作路径。~ 代表当前用户的家目录。直接输入pwd就能看到当前目录
|
1
|
Macbook:~itcast$ls
|
列出当前工作路径下的所有的文件与文件夹。直接输入ls显示当前目录下的目录和文件
|
1
|
Macbook:~itcast$ls-l
|
详细列出当前工作路径下的所有的文件与文件。直接输入ls -l 就是列出当前目录下的目录和文件详细列表
|
1
|
Macbook:~itcast$cd
|
改变工作路径,默认情况下终端的工作路径是当前用户的家目录。例如 cd / 就是切换到根目录
|
1
|
Macbook:~itcast$touch
|
在终端创建文件,例如 touch test.c ,就是在当前目录创建test.c文件
七、如何开发一个C语言的程序
必须要熟悉C语言的语法规范,然后将一些单词、符号根据C语言的语法规范组合起来,再将C代码编译成可执行程序。编译的时候需要用到编译器,编译器实际上就是一个软件,下载下来安装就可以使用了。
编写第一个C程序
编写C程序源文件
创建1个文件,这个文件的后缀名必须是.c,然后打开这个文件,在这个文件之中编写我们的C代码就可以了。
注意: C语言是严格区分大小写的.,不能搞错。除了双引号之间的内容,其他地方的代码必须使用英文输入法来输入(因为符号必须为半角符号,否则出错!)
比如我们在终端创建一个test.c文件
|
1
|
Macbook:~itcast$touchtest.c
|
在文件里写入
|
1
2
3
4
5
6
|
#include <stdio.h>
intmain(intargc,constchar*argv[]){
printf("hello world!\n");
return0;
}
|
编译C程序源文件
使用编译器将C源代码编译为二进制代码。
命令:cc -c C源文件的全名称,也就是
|
1
|
Macbook:~itcast$cc-ctest.c
|
如果正常的情况下会生成1个.o的文件.,这个文件我们叫做目标文件,目标文件之中,是C文件的二进制。
注意:在编译的时候, 会先去检查C源文件中的代码是否符合C的语法规范,如果符合规范 才会生成.o 目标文件。否则不会生成目标文件.,并且会提示错误。
链接生成的目标文件
生成的目标文件.o 不能直接交给CPU去执行,一个可以被CPU识别并执行的程序 必须还要一些额外的代码,也就是启动代码。
链接:为目标文件添加启动代码.,以让这个程序可以被CPU识别并执行。
命名:cc 目标文件名
|
1
|
Macbook:~itcast$cc test.o
|
一切正常的话 就会生成1个a.out程序 ,这个程序就可以被CPU识别并执行了。
执行C程序
在终端中输入以下命令即可执行我们编写的C程序了。
|
1
|
Macbook:~itcast$./a.out
|

001-iOS开发前奏-C语言笔记的更多相关文章
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- 浅谈iOS开发中多语言的字符串排序
一.前言 在iOS开发中,一个经常的场景是利用tableview展示一组数据,以很多首歌曲为例子.为了便于查找,一般会把这些歌曲按照一定的顺序排列,还会加上索引条以便于快速定位. 由于歌曲名可能有数字 ...
- iOS开发环境C语言基础
1 在“桌面”上创建一个文件夹Test 1.1 问题 在桌面上创建一个文件夹,我们需要了解Max OS X操作系统的操作方法.对于Max OS X操作系统,有两种方法可以在桌面上创建文件夹,一种方法是 ...
- iOS开发系列--C语言之存储方式和作用域
概述 基本上每种语言都要讨论这个话题,C语言也不例外,因为只有你完全了解每个变量或函数存储方式.作用范围和销毁时间才可能正确的使用这门语言.今天将着重介绍C语言中变量作用范围.存储方式.生命周期.作用 ...
- iOS开发环境C语言基础 数组 函数
1 求数组元素的最大值 1.1 问题 创建程序,实现查询数组中最大值的功能,需求为:创建一个长度为10的数组,数组内放置10个0~99之间(包含0,包含99)的随机数作为数组内容,要求查询出数组中的最 ...
- 李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
上一讲中已经创建了第一个C语言程序,知道了C程序是由函数构成的,这讲继续学习C语言的一些基本语法.C语言属于一门高级语言,其实,所有的高级语言的基本语法组成部分都是一样的,只是表现形式不太一样.就好像 ...
- iOS开发系列--C语言之数组和字符串
概览 数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等.而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符数组.今天主要就介绍如 ...
- iOS开发系列--C语言之指针
概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 ...
随机推荐
- JAVA为什么不能通过构造函数传参来设置数组长度。
今天我们来说说 JAVA通过构造函数传递的参数来设置数组长度的问题. 问题在于我们没有明确知晓JVM的运行顺序.在new对象的时候,先调用构造函数,但是并没有将执行构造函数的代码,随机之后就初始化了 ...
- Swift 4.0 字典(Dictionary)学习
定义字典常量(常量只有读操作) let dictionary1 = ["key1": 888, "key2": 999] let dictionary2: [S ...
- SpringBoot2 线程池的定义和使用
SpringBoot2 线程池的定义和使用 定义线程池 @Slf4j @EnableAsync @Configuration public class AsyncExecutorConfig impl ...
- centos 安装activeMq
Apache ActiveMQ是一个免费的开源消息代理和集成模式服务器.它支持来自JAVA.c++.C.Python.Perl.PHP等多种语言的客户端和协议.它提供了许多功能,如消息组.虚拟目的地. ...
- 我的Keras使用总结(3)——利用bottleneck features进行微调预训练模型VGG16
Keras的预训练模型地址:https://github.com/fchollet/deep-learning-models/releases 一个稍微讲究一点的办法是,利用在大规模数据集上预训练好的 ...
- IDEA报错:Could not find resource com/liwen/bean/userMapper.xml
主要原因设idea无法识别src路径下的xml文件,要把xml文件建立在resources文件下
- 16. nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "auditUnitName"
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver:handleHttpMessageNotRead ...
- C 实战练习题目3
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 假设该数为 x. 1.则:x + 100 = n2, x + 100 + 168 = m2 ...
- Vue2.0 -- 钩子函数/ 过度属性/常用指令/以及Vue-resoure发送请求
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SVN钩子HOOK设置自动备份,服务本地可以看到所有更新内容。
可以实现SVN本机备份.或者其他备份.关键是可以保持有一份最新的SVN文件可以查看. 实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实 ...