------- android培训、iOS培训、云计算培训、Java培训、期待与您交流! ----------
了解:
1、iOS开发,使用Mac平台下的Xcode搭建C语言开发环境;
2、Windows环境下,下载微软的Visual C++搭建C语言开发环境;
(一) 创建C程序(Mac平台)
1、打开Xcode,新建Xcode项目;
2、选择简单的命令行项目(OS X ==>Application、选中命令行项目);
3、输入项目信息(项目名:中文、英文均可,Type==> C);
4、选择一个用来存放C程序代码的文件夹;
5、运行程序(左上角运行按钮 或 command + R组合键运行);
(二) 程序代码分析:
1、打开项目中的main.c文件:(C 程序的源文件为.c文件)
1> #include <stdio.h>
① #include 是C语言预处理指令之一,所谓预处理:就是在编译之前做的处理,预处理指令一般以#开头;
② #include 后面会跟一个文件名,预处理器发现#include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文件中,被包含文件中的文本将替换源文件中的#include 指令,就像你把被包含文件中的全部内容拷贝到这个#include 指令所在位置一样;
③ #include 指令不仅仅限于.h头文件,它还可包含任何编译器能识别的C/C++代码文件,包括.C、.hpp、.cpp等,甚至.txt、.abc等都可以;
注意:若头文件为系统自带文件,使用<>,若为自己创建文件,则用"";
2>main函数:
① C中的函数即是面向对象中的方法;
② C语言是一门面向过程的语言,是以过程为中心的编程思想,就是先分析出解决问题所需的步骤,然后用函数一步步实现,使用时一个个一次调用函数就可以了;
③ 一个C程序中一定会有且只有一个main函数,main函数是整个C程序的入口;
④ main函数的返回值为int类型,接收2个参数,参数可省略不写;
注意:
① main函数没有写返回值类型,并不代表函数没有返回值,而是表示返回值类型为int类型,只有void才表示无返回值;
② 由于C语言的语法限制不严格,可简化main函数为:(下图所示),虽然它要求main函数返回int类型的值,但可不返回;
<pre name="code" class="objc">#include <stdio.h>
int main()
{
printf("Hello word");
}
3>stdio.h 头文件:是C语言函数库中的一个头文件,里面指定了一些输入输出函数;
(三) 开发和运行程序的步骤
1、编写程序:C语言原文件扩展名为".c",源文件以ASCII码形式存储,不能直接被计算机执行,因为计算机仅能识别0和1;
2、编译:(VC环境下)(编译只会检查有没有语法错误,不会检测有没有main函数)
1> 把C的源程序翻译成计算机可识别的二进制形式的目标代码文件,这个过程叫“编译”,由C的编译器完成;
2> 在编译同时,还对源程序进行语法检查。若出现错误则编译失败,否则生成目标文件,且目标文件与源程序文件名一致,扩展名为".obj";
3>每个源文件是单独编译的,若一个项目中有多个.c源文件,编译成功会生成多个对应的.obj目标。一般情况下,目标文件间是有关联的,如a.obj可能会调用b.obj中定义的函数,因此他们不能单独被计算机执行,且目标文件中并不包含程序运行所需的库函数等;
3、链接:(VC环境下)(链接只会检查有没有错误)
1> 将所有有关联的obj目标文件以及系统提供C库函数等组合在一起生成可执行文件的过程,称为“链接”;
2>链接生成的可执行文件的文件名跟源程序文件同名,扩展名为“.exe”,计算机可直接执行;
4、运行:
1>若在Windows环境下,直接双击“.exe”文件即可运行C程序;
2> 若在Mac OS X环境下,用Xcode创建的命令行项目运行,Mac OS X系统是基于UNIX系统的,因此生成的可执行文件;
(四) 总结:
1、在编译器编译程序前先执行预处理指令#include指令,拷贝stdio.h的内容到源文件中;
2、编译源程序(.c文件),生成目标文件;
1> Mac环境下:生成.o目标文件;
2> Windows环境下:生成.obj文件;
3、链接C语言函数库,生成可执行文件;
1> Mac环境下:生成.out目标文件;
2> Windows环境下:生成.exe文件;
4、运行可执行文件,在屏幕上输出内容;
5、若使用终端运行C程序
1> clang指令编译链接执行程序)
① 编译:cc -c one.c
② 链接:cc one.o
③ 编译、链接:cc one.c
④ 运行当前路径下的可执行文件:./a.out
⑤ 更改可执行文件名称:cc two.c -o one
2> 常见错误:linker链接
① 语法错误:可通过编译器报错信息解决;
② 逻辑错误:需耐心调试程序;
6、多语言对比(输出“哈哈”并换行):
C语言:
#include <stdio.h>
int main()
{
print(“哈哈\n”);
return 0;
}
Object-C语言:
#import <Foundation/Foundation.h>
int main()
{
NSLog(@“哈哈”);//自动换行
return 0;
}
Java语言:
class Test{
public static void main(String [] args){
System.out.println(“哈哈”);
}
}
PS:本章节介绍了如何编写第一个C程序以及它的运行原理,接下来的章节中将探索C语言内部具体知识;