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语言学习的博客,希望这只是 ...
随机推荐
- 洛谷——P1043 数字游戏
https://www.luogu.org/problem/show?pid=1043 题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要 ...
- vim 基础学习之global
global命令可以在指定模式下,匹配行上进行Ex命令 使用格式: :[range]g[lobal]/{pattern}/[cmd] range-是执行范围(如果缺省,是%) global-命令关键字 ...
- Hive里的分区、分桶、视图和索引再谈
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- 用SSL保Samba安全
用SSL保Samba安全 在企业中用Samba做为文件服务器是非常容易的事了,那如何保证存储数据的安全,如何保证数据传输的安全呢?我以前介绍过通过Samba安全级别和加装防病毒软件在 ...
- Redis学习笔记--Redis客户端(三)
1.Redis客户端 1.1 Redis自带的客户端 (1)启动 启动客户端命令:[root@kwredis bin]# ./redis-cli -h 127.0.0.1 -p 6379 -h:指定访 ...
- UVALive 5292 Critical Links
Critical Links Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Ori ...
- HUD——T 3836 Equivalent Sets
http://acm.hdu.edu.cn/showproblem.php?pid=3836 Time Limit: 12000/4000 MS (Java/Others) Memory Lim ...
- 洛谷——P1209 [USACO1.3]修理牛棚 Barn Repair
https://www.luogu.org/problem/show?pid=1209 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假 ...
- 地道的 Python(二)
作者: Zhang Yang 列表推导 上文介绍了一个高逼格的创建字典的方法.那列表呢?依据蛋痛定律,它也一定有,可是它被起了一个很蛋痛的名字,叫列表推导: 先看看这种代码: li = [] for ...
- Linux搭建aspx.net环境之:CentOs 7 安装 Mono 和 Jexus 步骤记录
1 因为163没有CentOs7的镜像.所以没有加这个 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo cd /etc/yum.rep ...