一、开发工具的选择

  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语言程序(理解编译、连接、运行)的更多相关文章

  1. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

  2. 【做中学】第一个 Go 语言程序:漫画下载器

    原文地址: 第一个 Go 语言程序:漫画下载器: https://schaepher.github.io/2020/04/11/golang-first-comic-downloader 之前学了点 ...

  3. 00 你的第一个C语言程序

    C语言简介 C 语言是一种通用的.面向过程式的计算机程序设计语言,即编程语言. 为移植和开发 UNIX 操作系统,丹尼斯·里奇于1972年在贝尔电话实验室设计开发了 C 语言的第一个版本. C 语言同 ...

  4. 第一个C语言程序

    从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...

  5. C语言学习-01第一个C语言程序

    一 C语言的历史 C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言. 尽管C语言提供 ...

  6. C语言入门(2)——安装VS2013开发环境并编写第一个C语言程序

    在C语言入门系列中,我们使用Visual studio 2013 Professional作为开发工具.本篇详细介绍如何安装Visualstudio 2013 Professional并写出我们第一个 ...

  7. 如何把一个c语言程序做成windows服务开机自启动

    原文:如何把一个c语言程序做成windows服务开机自启动 目前写的程序是一个用c语言实现socket侦听的,那么如何把这个程序做成开机自启动呢? 我们是通过vs6.0,编译后生成了.exe文件,然后 ...

  8. Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序

    Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...

  9. 我的第一个C语言程序

    从自学开始到现在应该有块一个月了,之前一直想要写博客一直没想好要自己建博客还是找平台来写.现在想想 其实都一样,不论在哪里,都可以记录自己学习的成长记录.这是我的第一篇关于C语言学习的博客,希望这只是 ...

随机推荐

  1. OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天

    在研究OpenJDK,Java编译器javac源码的过程中,发现以下代码. 顿时发现枚举类竟然也有如此"高端大气上档次"的用法. 沙场点兵(用法源码) com.sun.tools. ...

  2. Mysql学习总结(3)——MySql语句大全:创建、授权、查询、修改等

    一.用户创建.权限.删除 1.连接MySql操作 连接:mysql -h 主机地址 -u 用户名 -p 用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 打开cmd, ...

  3. 微信小程序---app.json中设置背景色不生效解决办法

    按照官方文档的说明,backgroundColor应该可以设置窗口的背景色. "window":{ "backgroundTextStyle":"li ...

  4. 使用Vue动态生成form表单

    form-create 表单生成器 具有数据收集.校验和提交功能的表单生成器,支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动,时间选择,日期选择, ...

  5. 【DRF版本】

    目录 使用内置的URLPathVersioning类 使用自定义的版本控制类 首先,我们开发的项目会有多个版本. 其次,我们的项目版本会随着更新越来越多,我们不可能因出了新版本就不维护旧版本了. 那么 ...

  6. 使用spring-boot 国际化配置所碰到的乱码问题

    写好html静态页面 ,  也加上了编码格式 , 获取国际化展示在浏览器中还是存在乱码 , 开始以为是浏览器编码格式问题 , 做过处理后任没有得到解决 , 具体的处理方案如下: <meta ht ...

  7. PatentTips - Control register access virtualization performance improvement

    BACKGROUND OF THE INVENTION A conventional virtual-machine monitor (VMM) typically runs on a compute ...

  8. 项目EasyUi和JS中遇到的问题总汇

    近期因为项目用到EasyUi,曾经仅仅是听过,可是没有详细用过.仅仅能一边学一边做.如今将做的过程中遇到的一些难点总结例如以下,以备后用: EsayUi使用: Json格式:key:value,key ...

  9. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

  10. 分享一段php获取随意时间的前一天代码

    <?php /** * 获取给定日期的前一天 * @param string $date * @return string $yesterday */ function getYesterday ...