iOS_02_第一个C语言程序(理解编译、连接、运行)
一、开发工具的选择
1、 可以用来写代码的工具:记事本、ULtraEdit、Vim、Xcode等。
2、 选择XCode的原因:苹果公司官方提供的开发利器、简化开发的工程、有高亮显示功能。
3、 使用XCode新建一个C程序的源代码文件(扩展名为.c或者.C)
# 开发XCode
# 新建文件
# 选择文件类型 .c
二、代码编写
1、程序结构
* C程序的结构:由函数组成
# 任何一个C语言程序都市有一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。
* 函数的概念
# 函数名: 一个程序中由无数个函数组成,每个函数都有自己的名称。
# 调用(执行)函数:根据函数名酒可以调用对应的函数,执行相应的功能。
* C程序的入口
# C程序的入口是一个名字叫做main的函数,简称main函数。
# 不管整个程序中又多少个函数,都是先执行main函数。
2、编程程序
* 编写main函数(大括号{}中得内容是函数体)
#include<stdio.h>
int main()
{
printf("这是函数体"); // 输出字符串 调用系统函数
return 0;
}
三、编译
1、什么是编译:将C源程序翻译成计算能识别的0和1
2、使用什么编译器:Xcode3是用GCC,XCode4使用LLVM编译器(前端clang)
3、如果使用clang编译程序?
* 在终端中输入:CC -c 文件名.c。(cd进入当前目录下)
* 编译成功,会生成.o目标文件。
4、编译器的错误和警告功能
* 如果嗲吗有语法问题,编译器会直接报错,并指出错误的个数和具体的行号。
* 只要有1个错误,程序就不能编译成功,也不好生成.o文件。
* 警告信息只是编译的一些建议,并不影响编译通过。
四、连接
1、连接的作用:将.o文件和C语言函数库组合在一起,生成可执行文件
2、由连接器完成,clang编译器里面已经包含了连接指令。
* 终端输入:cc 文件.o。
* 连接成功,会生成a.out可执行文件。
五、运行
1、两种方式运行
* 直接双击打开a.out文件。
* 终端中使用./a.out指令。
2、修改文件内容之后,一定要重新编译、连接、再运行。
3、\n的作用:回车换行。
六、其他clang指令
1、刘改可执行文件名称:cc xx.o -o 文件名
2、一起编译、连接:cc xxx.c
七、初学者常见错误
1、不写分号、用了中文分号
2、字符串少了双引号、或者用了单引号,双引号里面又又双引号
3、代码没有写在main函数内部、return之前
4、文件扩展名不是.c 或者.C,比如.txt
5、用绝对路径编译文件,注意目标文件生成的地方。
八、总结
1、整个程序的运行过程
* 编写程序 -> 源代码-> 编译 -> 目标代码 -> 连接(c语言函数库)-> 可执行的机器代码 -> 运行
2、总结常见文件的扩展名
* .c是C语言源文件,在编写代码的时候创建
* .o是目标文件,在编译成功的时候产生。
* .out是可执行文件,在连接成功的时候产生。
3、总结clang指令
* 编译:cc -c xx.c
* 连接: cc xxx.o
* 编译、连接:cc xxx.c
* 运行可执行文件: ./a.out
* 更改可执行文件的名称:cc xxx.o -o xxx
4、开发中会遇到哪些错误?如果解决?
* 语法错误,可以通过编译器的报错信息解决
* 逻辑错误,需要内心调试程序
5、学习建议
* 学编程并不是学英文
* 程序的可读性(非常重要)
* 初学者不要过于寻根问底
九、例子
1、用二种不同的代码方式输出下面图案
************
****8888****
************
#include <stdio.h>
int main()
{
printf("************\n****8888****\n************\n");
;
}
#include <stdio.h>
int main()
{
printf("************\n");
printf("****8888****\n");
printf("************\n");
;
}
iOS_02_第一个C语言程序(理解编译、连接、运行)的更多相关文章
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- 【做中学】第一个 Go 语言程序:漫画下载器
原文地址: 第一个 Go 语言程序:漫画下载器: https://schaepher.github.io/2020/04/11/golang-first-comic-downloader 之前学了点 ...
- 00 你的第一个C语言程序
C语言简介 C 语言是一种通用的.面向过程式的计算机程序设计语言,即编程语言. 为移植和开发 UNIX 操作系统,丹尼斯·里奇于1972年在贝尔电话实验室设计开发了 C 语言的第一个版本. C 语言同 ...
- 第一个C语言程序
从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...
- C语言学习-01第一个C语言程序
一 C语言的历史 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供 ...
- C语言入门(2)——安装VS2013开发环境并编写第一个C语言程序
在C语言入门系列中,我们使用Visual studio 2013 Professional作为开发工具.本篇详细介绍如何安装Visualstudio 2013 Professional并写出我们第一个 ...
- 如何把一个c语言程序做成windows服务开机自启动
原文:如何把一个c语言程序做成windows服务开机自启动 目前写的程序是一个用c语言实现socket侦听的,那么如何把这个程序做成开机自启动呢? 我们是通过vs6.0,编译后生成了.exe文件,然后 ...
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...
- 我的第一个C语言程序
从自学开始到现在应该有块一个月了,之前一直想要写博客一直没想好要自己建博客还是找平台来写.现在想想 其实都一样,不论在哪里,都可以记录自己学习的成长记录.这是我的第一篇关于C语言学习的博客,希望这只是 ...
随机推荐
- 洛谷 P3913 车的攻击
P3913 车的攻击 题目描述 N \times NN×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_iRi行,第C_iCi 列.求至少被一个车攻击的格子数量. 车可以攻击所有同一行或者同 ...
- mongodb适用和不适用的应用场景
近期考虑把订单历史数据从Oracle数据库迁移到Nosql数据库做历史数据查询和分析,一天千万级数据.打算使用mongodb数据库.使用nodejs做查询和统计API,对并发请求量要求低,不知道有没有 ...
- PHP实现事件机制实例分析
PHP实现事件机制实例分析 内置了事件机制的语言不多,php也没有提供这种功能.事件(Event)说简单了就是一个Observer模式.实现起来非常easy.可是有所不同的是,事件的监听者谁都能够加, ...
- Image-Loader LruMemoryCache
这段时间在研究Universal-Image-Loader 这个图片处理开源框架,这里主要分析一下它的LRU(Least Resently Used,最近最少使用算法)内存缓存的实现. 在UIL它提供 ...
- Spring_Learn
IOC 控制反转,或者依赖注入 控制权的转移,应用程序本身不负责依赖对象的创建和维护.而是由外部容器负责创建和维护. DI(依赖注入)是其实现的一种方式 创建对象并且组装对象之间的关系. 1Spr ...
- 完全背包模板 51Nod 1101
N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元. 例如:5分钱换为零钱,有以下4种换法: 1.5个1分 2.1个2分3个1分 3.2个2分 ...
- JAVA使用YUI压缩CSS/JS
前言 JS/CSS文件压缩我们经常会用到,可以在网上找在线压缩或者本地直接使用,我这里使用的是yahoo开源组件YUI Compressor.首先介绍一下YUI Compressor,它是一个用来压缩 ...
- 洛谷 P1757 通天之分组背包
P1757 通天之分组背包 题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品 ...
- AsyncTask源代码翻译
前言: /** <p>AsyncTask enables proper and easy use of the UI thread. This class allows to perfor ...
- RecipientsEditor-信息收件人输入框
首先说一下信息收件人这个类的继承关系 RecipientsEditor->EncapsulatedMTKRecipientEditTextView(这两个类都在mms目录下) ->MTKR ...