黑马程序员-- C语言执行过程及注意点
通过对程序的逐步执行,了解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语言执行过程及注意点的更多相关文章
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...
- 黑马程序员——C语言基础语法 关键字 标识符 注释 数据及数据类型
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)C语言简单介绍 (1)C语言程序是由函数组成的任何C语言程序都是由一 ...
- 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1> 简单介绍一下scanf函数 这是在 ...
- 黑马程序员——C语言基础 函数
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)函数的定义 1> 任何一个C语言程序都是由一个或者多个程序段( ...
- 黑马程序员——OC语言基础语法 面向对象的思想
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...
- 黑马程序员—C语言的判断语句
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.分支结构 结构化程序设计(英语:Structured programming),一种编程范型 ...
- 黑马程序员——C语言基础 枚举 宏定义 自定义 static exterm
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)枚举 1)枚举类型的定义 枚举是C语言中的一种基本数据类型,并不是构 ...
- 黑马程序员——OC语言 核心语法 (3)
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)分类Category 1) 基本用途 如何在不改变原来类模型的前提下 ...
- 黑马程序员—C语言的特点和关键字
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- C语言的简介 一. C语言具有下列特点: C语言既具有低级语言直接操纵硬件的特点,又具有高级语言 ...
随机推荐
- TCP为什么需要3次握手与4次挥手
为什么需要“三次握手” 在谢希仁著<计算机网络>第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”.在另一部经典的<计算机网络> ...
- JqMobi学习
JqMobi+phonegap+html5 开发Android.ios应用
- 节点与坐标系——Cocos2d-x学习历程(十)
1.Node Cocos2d-x把渲染树上的每一个游戏元素抽象为一个节点,即Node.一切游戏元素都继承自Node,因此它们都具有Node所提供的特性.Node定义了一个可绘制对象的通用特性,包括位置 ...
- 关于yii2的gridview关联搜索步骤
在使用yii2构建搜索视图,经常都会使用到gridview这个组件,这个组件十分强大,通过一定的配置就能进行关联搜索,下面就是简单的步骤 需求场景:一个车系表,里面存放在品牌表的id,现在要用品牌名字 ...
- AndroidManifest.xml配置文件详解
AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文旨在总结该配置文件中重点的用法,以便日后查阅.下面是一个标准的AndroidManifest.xm ...
- [原创]C语言里为何会有“2+2=5”的结果
原文链接:C语言里为何会有“2+2=5”的结果 写这篇原创文章是因为看到了极客中的一篇文章<有趣各种编程语言实现2+2=5>,其中C语言是这样实现的: int main() { ″; // ...
- [置顶] ProcessOn:划时代性的在线作图工具
ProcessOn是一款专业作图人员的社交网络,这里汇聚很多业界专家.学者,同时他们分享的作品又形成一个庞大的知识图库,你在学习专业知识的同时还可以结交一些志同道合的新朋友. ProcessOn核心设 ...
- iOS中的retainCount
我们都知道iOS中采用引用计数的技术来管理内存,当一个对象没有任何一个地方引用的时候会自动释放,此时的retainCount为0,而且提供了一个-(NSInteger)retainCount的方法来获 ...
- LCIS(线段树区间合并)
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- [基础]RHEL6下iSCSI客户端挂载配置
本文根据鸟哥私房菜进行操作:http://linux.vbird.org/linux_enterprise/xen.php?thisscreen=800x600 一.侦测 [root@vhost3 ~ ...