一、开发工具的选择
Xcode
二、代码的编写
- 程序结构
- 先C程序的结构:由函数组成
- 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的
-
比如你用C语言写了一个MP3播放器程序,那么他的程序结构如下图所示:
MP3播放器程序结构
- 函数的基本概念
- 函数名:一个程序中由无数个函数组成,每个函数都有自己的名称
- 调用(执行)函数:根据函数名就可以调用对应的函数,执行相应的功能
- C程序的入口
- C程序的入口是一个名字叫做main的函数,简称main函数
- 不管整个程序中有多少个函数,都是先执行main函数
- 编写程序
- 编写main函数(大括号{ }中的内容是函数体)
int main()
{
return 0;
}
- 编写多个函数,并且进行调用
int test()
{
return 0;
}
int main()
{
test();
return 0;
}
- 使用printf函数输出内容到屏幕上
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
三、编译
- 什么是编译:将C源程序翻译成计算机能识别的0和1
- 使用什么编译器:Xcode3使用GCC,Xcode4使用LLVM编译器(前端用clang)
- 如何使用clang编译器编译程序?
- 在终端中输入:cc –c 文件名.c
- 编译成功,会生成.o目标文件
- 编译器的错误和警告功能
- 如果代码有语法问题,编译器会直接报错。并指出错误的个数和具体行号。
- 只要有1个错误,程序就不能编译成功,也不会生成.o文件
- 警告信息只是编译器的一些建议,并不影响编译通过
四、链接
- 链接的作用:将.o文件和C语言函数库组合在一起,生成可执行文件
- 由链接器完成,clang编译器里面已经包含了链接指令
- 在终端中输入:cc 文件名.o
- 链接成功,会生成a.out可执行文件
五、运行
- 两种运行方式
- 直接双击打开a.out文件
- 终端中使用 ./a.out 指令
- 修改文件内容之后,一定要重新编译、链接,再运行
- \n的作用:回车换行
六、其他clang指令
- 修改可执行文件名称:cc xxx.o -o 文件名
- 一起编译、链接:cc xxx.c
七、初学者常见错误
- 不写分号、用了中文分号
- 字符串少了双引号、或者用了单引号,双引号里面又有双引号
- 代码没有写在main函数内部、return之前
- 文件拓展名不是.c或者.C,比如.txt
- 用绝对路径编译文件,注意目标文件生成的地方
八、总结
1)整个程序的运行过程
整个程序的运行过程
2)总结常见文件的拓展名
- .c是C语言源文件,在编写代码的时候创建
- .o是目标文件,在编译成功的时候产生
- .out是可执行文件,在链接成功的时候产生
3)总结clang指令
- 编译:cc –c xxx.c
- 链接:cc xxx.o
- 编译、链接:cc xxx.c
- 运行可执行文件:./a.out
4)开发中会遇到哪些错误?如何解决?
语法错误,可以通过编译器的报错信息解决
逻辑错误,需要耐心调试程序
5)学习建议
学编程并不是学英文
程序的可读性
初学者不要过于寻根问底
九、习题
用2种不同的代码方式输出下面的图案
*****************
** hello world! **
*****************
十、程序实现
01-第一个C语言程序
int play() {
return 0;
}
void first_C_program(void) {
play();
printf("第一个C语言程序\n");
}
02-第二个C语言程序_1
void second_C_program_1(void) {
// 不推荐这样写
printf("******************\n** hello world! **\n******************\n");
}
03-第二个C语言程序_2
void second_C_program_2(void) {
printf("******************\n");
printf("** hello world! **\n");
printf("******************\n");
}
网友评论