1.C语言功能:类似英语一样,英语是人和人交流沟通的方式,工具
C语言就是人和计算机交流沟通的方式,工具
除了C语言,还有C++,JAVA,Python,Go,Rust语言等
2.C语言背景:
1972年由丹尼斯里奇发明C语言
1978年发布<<the c programming language>>出版,走向世界
1989年发布C89标准
1999年发布C99标准
3.编写人生第一个标准C程序
具体实施步骤如下:
mkdir -p /home/tarena/stdc/
cd /home/tarena/stdc/
vim helloworld.c 添加如下内容
/*
这是我的第一个C程序
纪念C语言之父
*/
#include <stdio.h>
int main(void)
{
printf("hello,world\n");
return 0;
}
保存退出
继续执行以下命令:
gcc helloworld.c //编译程序
ls -lh
./a.out //运行程序
4.总结:C程序基本编程规范
a)C程序对应的文件有两种:
源码文件(简称源文件):必须以.c结尾
头文件:必须以.h结尾
必须有一个源文件存在,头文件可以不要
b)C程序注释(不参与程序编译运行,仅仅就是文件的功能说明)有两种:
/*注释的内容*/:
优点:多行注释
缺点:不能嵌套:/* /* */ */,报错
//注释的内容:
优点:可以嵌套: ///
缺点:不能多行注释
c)任何C程序必须包含头文件:stdio.h(为了使用printf函数)
包含头文件的形式有两种(include前面必须加#,它是一个预处理指令):
1.#include <头文件名.h>:告诉gcc编译器,将来包含的头文件位于/usr/include目录下
请到这个目录下找要包含的头文件
2.#include "头文件名.h":告诉gcc编译器,现在当前目录下找要包含的头文件,找不到再到
/usr/include/目录下找
注意:include后面不能加分号";"
d)任何C程序必须只能包含唯一一个main函数
一个C程序不允许有多个main函数,并且将来CPU一定要从main函数开始
依次向下开始运行,main函数又称主函数
C程序对main函数有要求:main函数前面必须加int关键字,并且main函数后面
跟一对圆括号,圆括号里面的内容可以写void,也可以写其他好东西(后续讲解)
并且main函数里面的内容由程序员自己编写,所以最后还要跟一对花括号{}
e)main函数中,也就是花括号中每条语句后面必须跟分号;
main函数中的return表示让main函数执行到这停止运行,此时程序就会结束
并且return后面跟0,告诉操作系统此程序执行还算正常,如果想告诉操作系统
此程序执行有问题,后面跟非0
5.人生认识的第一个有名的函数:printf(大神写好的,咱直接用)
printf函数功能:向显示器上输出一段信息
printf函数格式:printf("要输出的信息");
例如:printf("我将来必然成为一名大神.\n");
注意:printf函数一般要在输出的信息后面加'\n',表示换行
占位符:%d
printf("1+1 = %d\n", 2);
printf("%d %d\n", 2, 3);
6.大名鼎鼎的C程序编译器:gcc(GNU软件之父编写的)
6.1.gcc功能:它也是一个程序,它的名字叫C程序的编译器
它类似一个翻译官,将C程序的源文件翻译成计算机能够识别的,能够看懂的文件
例如:gcc helloworld.c 生成一个a.out可执行的文件,a.out计算机能够识别
helloworld.c计算机不认识!
6.2.gcc命令语法格式:gcc 选项 源文件
两个重要选项:
-o:输出,后面要跟一个输出生成的新文件
-E:预处理选项
-c:只编译不链接,仅仅将自己的源文件翻译成计算机能够识别的可执行程序
但是此时不会包含大神的printf函数内容
6.3.gcc编译源文件的流程三步骤(翻译官要做三件事):
1.预处理:gcc将包含的头文件内容全盘拷贝到源文件中
对应的选项:-E
例如:gcc -E helloworld.c -o helloworld.i
语义:gcc翻译官对helloworld.c源文件进行预处理,将stdio.h文件里所有的
内容拷贝到helloworld.c中,并且生成一个新文件helloworld.i
2.编译:只编译不链接
对应的选项:-c
例如:gcc -c -o helloworld.o helloworld.i
gcc -c -o helloworld.o helloworld.c
语义:gcc翻译官仅仅将预处理器以后的文件或者源文件编译翻译成
计算机能够识别的可执行文件helloworld.o
此时helloworld.o中没有大神的printf函数的内容
3.链接:就是将代码中用到别的内容函数包含进来,例如printf
例如:gcc -o helloworld helloworld.o
语义:最终将helloworld.o和大神写的各种函数代码printf包含在一起
6.4.结论:gcc编译程序的三种方式
a)流氓法:gcc helloworld.c
默认生成a.out
./a.out
b)分步编译:
gcc -E -o helloworld.i helloworld.c
vim helloworld.i //查看文件的内容,关键之前的注释是否还存在?
gcc -c -o helloworld.o helloworld.i
gcc -o helloworld helloworld.o
指定生成helloworld
./helloworld
c)一步到位:
gcc -o helloworld helloworld.c
./helloworld