通过对程序的逐步执行,了解C语言程序执行过程:

1.编写源文件即.c文件。

#include <stdio.h>

void play()

{

printf("hello world!\n");

}

int main()

{

play();

return 0;

}

2.编译.c文件,使用命令:cc -c 文件名.c

lymdeMacBook-Pro:代码 lym$ pwd

/Users/lym/Desktop/20140502/代码

lymdeMacBook-Pro:代码 lym$ ls -l

total 16

-rw-r--r--@ 1 lym  staff  106  5  2 19:20 01-第一个C语言程序.c

-rw-r--r--@ 1 lym  staff  137  5  2 19:46 02-第二个C语言程序.c

lymdeMacBook-Pro:代码 lym$ cc -c 01-第一个C语言程序.c

lymdeMacBook-Pro:代码 lym$ ls -l

total 24

-rw-r--r--@ 1 lym  staff  106  5  2 19:20 01-第一个C语言程序.c

-rw-r--r--  1 lym  staff  984  5  4 14:17 01-第一个C语言程序.o

-rw-r--r--@ 1 lym  staff  137  5  2 19:46 02-第二个C语言程序.c

lymdeMacBook-Pro:代码 lym$

3.链接:将编译生成的.o文件与C语言函数库相结合生成可执行文件的过程。使用命令:cc 文件名.o进行链接。

lymdeMacBook-Pro:代码 lym$ ls -l

total 24

-rw-r--r--@ 1 lym  staff  106  5  2 19:20 01-第一个C语言程序.c

-rw-r--r--  1 lym  staff  984  5  4 14:17 01-第一个C语言程序.o

-rw-r--r--@ 1 lym  staff  137  5  2 19:46 02-第二个C语言程序.c

lymdeMacBook-Pro:代码 lym$ cc 01-第一个C语言程序.o

lymdeMacBook-Pro:代码 lym$ ls -l

total 48

-rw-r--r--@ 1 lym  staff   106  5  2 19:20 01-第一个C语言程序.c

-rw-r--r--  1 lym  staff   984  5  4 14:17 01-第一个C语言程序.o

-rw-r--r--@ 1 lym  staff   137  5  2 19:46 02-第二个C语言程序.c

-rwxr-xr-x  1 lym  staff  8528  5  4 14:19 a.out

lymdeMacBook-Pro:代码 lym$

4.运行,也就是执行可执行文件.out。由于.out是可执行文件,所以有两种可以程序结果的方式

方式一:双击.out文件。

方式二:进入.out文件所在目录,使用命令:./可执行文件名称.out。其中./表示当前路径

lymdeMacBook-Pro:代码 lym$ ls -l

 total 48

-rw-r--r--@ 1 lym  staff   106  5  2 19:20 01-第一个C语言程序.c

-rw-r--r--  1 lym  staff   984  5  4 14:17 01-第一个C语言程序.o

-rw-r--r--@ 1 lym  staff   137  5  2 19:46 02-第二个C语言程序.c

-rwxr-xr-x  1 lym  staff  8528  5  4 14:19 a.out

lymdeMacBook-Pro:代码 lym$ ./a.out

hello world!

lymdeMacBook-Pro:代码 lym$

注意:1.c文件是C语言源文件,在编写代码时生成;.o文件是C语言目标文件,在编译成功时产生;.out是可执行文件,在链接成功时产生。

2.总结上边所使用的clang指令:

    编译: cc -c xxx.c

    链接: cc xxx.o

   编译链接:cc xxx.c

   运行可执行文件:./a.out

      更改可执行文件名称:cc xxx.c -o xxxx或者cc xxx.o  -o xxxx

    3.没有main函数,可以编译过去,但不能执行成功;main函数也不能重复定义,编译不通过。

  4.上面编译和链接可以使用指令一次完成:cc 文件名.c , 而且一次完成生成的可执行文件可以如下使用:

   cc 文件名 .c  -o test。执行的时候用  “./ test”。test就代表可执行文件

  5. 通过指令:cc 文件名.o  -o  test也可以给生成的重命名为test的可执行文件。

6.文件名中不要加入空格,如果实在要用空格,使用tab,在终端显示成”\ ”。

  7. cc -c 可以一起编译多个文件,例如:

   cc  -c  01.c  02.c  03.c,注意文件名之间用空格分隔。

  8.由于printf是C语言函数库自带的函数,所以程序中使用它时,通过#include <stdio.h> 导入printf所在的

   文件,printf用于向终端输出信息。不导入stdio.h文件,程序也可以编译运行,但会有警告。为了避免出错,最好导入。

  9.字符串要用双引号括起来,不要用单引号,更不要双引号中加入双引号。

  10.只有语句中才用分号。

  11.除“”中的内容,其余都要使用英文字符,包括大小括号, 逗号,分号等。

  12.如果不去.c文件目录下编译,那么在哪个目录下输入编译指令,.o文件就会在哪个目录下生成。

也就是用绝对路径编译文件,注意目标文件的生成地方。

  13.换行符是“\n”不是“/n”。

  14.程序出现语法错误通过编译器报出错误信息解决;

  程序出现逻辑错误通过耐心调试程序解决。

  15.文件拓展名要使用.c或.C,不要使用.txt。

黑马程序员-- C语言执行过程及注意点的更多相关文章

  1. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  2. 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...

  3. 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1>  简单介绍一下scanf函数   这是在 ...

  4. 黑马程序员——C语言基础 函数

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)函数的定义 1> 任何一个C语言程序都是由一个或者多个程序段( ...

  5. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  6. 黑马程序员—C语言的判断语句

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.分支结构 结构化程序设计(英语:Structured programming),一种编程范型 ...

  7. 黑马程序员——C语言基础 枚举 宏定义 自定义 static exterm

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)枚举 1)枚举类型的定义 枚举是C语言中的一种基本数据类型,并不是构 ...

  8. 黑马程序员——OC语言 核心语法 (3)

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)分类Category 1) 基本用途 如何在不改变原来类模型的前提下 ...

  9. 黑马程序员—C语言的特点和关键字

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- C语言的简介 一. C语言具有下列特点: C语言既具有低级语言直接操纵硬件的特点,又具有高级语言 ...

随机推荐

  1. iOS堆栈-内存-代码在据算机中的运行

    其实作程序不管是那行,学什么语言最终的目的是和就算机打交道的,我们写的程序计算机是怎么处理的呢??? 计算机运行我们的程序无非就是吧磁盘-内存-cpu三者结合起来 我们写一个程序代码肯定是在此盘中存着 ...

  2. js call方法介绍

    call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN ...

  3. EC读书笔记系列之15:条款32、33、34

    条款32 确保你的public继承塑模出is-a关系 记住: ★public继承意味着is-a.适用于base class身上的每一件事情一定也适用于derived class身上,∵每一个deriv ...

  4. leetcode Minimum Depth of Binary Tree python

    # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...

  5. ExtJS4.2 Ext.grid.panel Store更改后刷新表格

    //////////////////////// // Prepare store //////////////////////// // prepare fields and columns var ...

  6. IE WebDriver 因保护模式无法启动的解决 (转载)

    现在Win7 已经应用很多了,即使是最原始的Win7 也是IE8,最新的patch后,都升到了IE11 Win7下预装高版本IE的情况下,启动IE WebDriver可能会出现: org.openqa ...

  7. springMVC+spring+mybatis整合过程中遇到的问题

    今天在配置SSM整合的过程中遇到了几个错误,折腾了好久,具体如下 1.java.lang.IllegalArgumentException: Mapped Statements collection ...

  8. 起启航-华夏互联与杰华网络合体结盟打造本土IT利舰

    北京时间2013年9月9日消息: 领先的软件研发企业上海逐一软件科技有限公司与专业互联网推广运营机构南昌杰华网络开发有限公司达成协议,双方将建立紧密合作关系与集团运营体制,并在未来的10个月内进行相应 ...

  9. [poj 2978]Colored Stones[状态压缩DP]

    题意: 给出n个石子,一共m种颜色.问最少去掉几个石子使得同种颜色全连续. 思路见注释. #include <algorithm> #include <cstdio> #inc ...

  10. 数学之路-python计算实战(13)-机器视觉-图像增强

    指数变换的基本表达式为:y=bc(x-a)-1 当中參数b.c控制曲线的变换形状,參数a控制曲线的位置. 指数变换的作用是扩展图像的高灰度级.压缩低灰度级.能够用于亮度过高的图像 本博客全部内容是原创 ...