首页 > 代码库 > ios-(2)第一个C语言程序(理解编译、连接、运行)

ios-(2)第一个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");

 

    return 0;

 

}

#include <stdio.h>

 int main()

{

    printf("************\n");

    printf("****8888****\n");

    printf("************\n");

    return 0;

}