李慧琴C语言 第一节课程

it2025-12-23  7

文章目录

1. 开始C语言的建议:讲解即学习思路: 2. gcc生成可执行文件过程预处理 :gcc -E xxx.c编译:gcc -S xxx.i汇编:gcc -c hello.s链接:gcc hello.o -o hello运行可执行文件总结:深入拓展:编译的原理 3. 编辑器vim 使用4.C程序设计基本概念4.1 编程主要事项头文件包含的重要性以函数为单位作为程序单位来编写。声明部分+实现部分return 0;注释 4.2 算法:解决问题的方法。4.3 程序:用某种语言实现算法4.4 进程与线程4.5 防止写越界,防止内存泄漏

1. 开始

C语言的建议:

概念的正确性动手能力(每天都在成长)(程序员不是培训出来的,像是作家,需要日积月累的)阅读优秀的程序段(先要动手,再去阅读,有对比才有伤害)大量练习,面试题(扎实自己的基本功)

讲解即学习思路:

基本概念数据类型输入输出专题流程控制数组指针(多级指针)函数 难点在于综合使用数组,指针,函数构造类型(工作中常用)动态内存管理调试工具和调试技巧(gdb,make) gdb用来调试段错误常用的库函数

平台介绍:64位的redhat6,vim,gcc(make)

2. gcc生成可执行文件过程

main函数

我们人为的定义了 main()函数作为函数的入口。

我们C源文件是如何生成可执行文件的: C源文件 -> 预处理 -> 编译 -> 汇编 -> 链接 -> 可执行文件。

编译器:gcc gcc 的源文件一定要写后缀,因为gcc 要根据后缀作编译选择(区分文件类型)

预处理 :gcc -E xxx.c

以 # 号开头的都只是在预处理中解决的。 主要是处理源文件中以“#”开头的预编译指令。   删除#define并展开宏   处理所有条件预编译指令,如#if, #ifdef, #endif   插入头文件到“#include”处   删除所有注释   添加行号和文件名标识,以便编译时编译器产生调试用的行号信息   保留所有#pragma编译指令。

编译:gcc -S xxx.i

不用定义名称,自动生成一个.s文件。 生成了一个汇编代码写的汇编文件

汇编:gcc -c hello.s

利用汇编程序(汇编器)将汇编语言源程序转换成0和1组成的机器指令序列(机器语言程序)( 生成了一个.o的目标文件.

链接:gcc hello.o -o hello

将多个可重定位的目标文件.o合并以生成可执行文件,其可以被加载到内存中,由系统执行。 -o hello 表示生成的文件名字为hello。 我们就多了一个绿色的可执行文件hello

运行可执行文件

使用./可执行文件的文件名的表达方式运行可执行的文件。

./文件名

总结:

生成可执行的文件分为4步走。预处理 -> 编译 -> 汇编 -> 链接,然后生成可执行文件。 但是gcc也提供了一个简单的方法gcc xxx.c,直接一步生成可执行文件。 也可以使用如下命令gcc xxx.c -o yyy.z,生成一个yyy.z的可执行文件。

深入拓展:编译的原理

3. 编辑器vim 使用

学会vim配置脚本,常用的快捷方式。

Esc 进入命令模式:在命令模式中输入i进入边距模式;输入v进可视化模式;:q表示强制退出;:wq表示保存退出;

进入V可视化模式。把光标方块库函数里输入大写的K,(即按 shift+k)就可以查看库函数的man手册。

4.C程序设计基本概念

4.1 编程主要事项

头文件包含的重要性

没有包含头文件就使用函数,使用的函数会默认返回一个int型的参数。

以函数为单位作为程序单位来编写。

以函数为单位作为程序单位来编写,可以提高代码的复用性。如写+-*/的功能,可以把+-*/分成4个程序单位,如以后用到+法功能,就可以抠+法的程序单元出来方便复位 main函数是我们人为定义的一个最先开始的线程,在程序运行的适合可以结束。

声明部分+实现部分

C语言推荐 变量先定义后使用

return 0;

return 0;和exit(0)是表示返回一个值给父进程看的。 在C语言中,我们习惯用0表示成功,非0表示失败。

注释

用一下三种方式实现。

/* */ // #if 0 #endif

4.2 算法:解决问题的方法。

(流程图,NS图,有限状态机FSM )描述出来

有限状态机这种思想来编程。

4.3 程序:用某种语言实现算法

4.4 进程与线程

4.5 防止写越界,防止内存泄漏

谁打开,谁关闭,谁申请谁释放。

最新回复(0)