大纲
C(15天)
第一周 C语言基础(只讲重点难点,其他看讲义)
第二周 常用的数据结构和算法(线性结构、动态数组、栈、队列、哈希表、二叉树、位图、排序、二分查找)
项目 C语言词法分析器(15天)
Linux(30天)
第三周 命令,编译工具链
常见命令(vim、gcc、gdb)
主要围绕系统编程
第四周 文件 目录
目录:递归处理目录(目录流):1递归复制文件夹 ,2递归删除文件夹,3遍历目录
普通文件:如何操作文件描述符
进程/线程
进程的基础源语(创建进程/fork、终止进程、执行程序)
进程的通信原理(管道,信号量)
线程:基本操作(创建、join、cancel、终止、清理函数)
互斥: 锁 同步:条件变量
网络编程(socket)
项目:网盘
学习方法
道:
1编程是学习技能而非知识
2学习是反人性的东西
3优秀是一种习惯
术:
1提前预习
2认真听讲
3完成作业
4及时复习
关于代码:
1注释不是越多越好,只在必要的地方写注释
2代码尽量美观简洁,及时分段。
建议:
1不要用百度(科学上网)
2英语很重要(多阅读原著)
3品味很重要(学习好的代码,注意习惯和思维) 推荐《 C语言程序设计:现代方法》
心态:
1承认人之间的差距(接受自己比别人差)
2相信假以时日你会比别人强
就业方向
1前端
C/S(client) 客服端 :速度快,学习成本大,更新麻烦 。例: qt
B/S(browser)网页端:速度慢,学习成本低,更新容易 。例: html5,js,css,vue,react
2后端
业务:数据库,Redis,消息队列,分布式
架构:微服务
3底层开发
操作系统内核,数据库,浏览器,编译器,数据引擎
4数据(需要掌握概率论、线代等)
大数据,AI
5嵌入式
汽车,IOT,芯片
6安全(需要掌握密码学等)
网络安全
为什么学习C语言
tiobe网站:基本处于第二。
C语言衔接低级语言(汇编、机器语言)和高级语言,但C语言更贴近硬件。
C-like语言:C++,java,rust,c#
C语言的起源:略
VS的操作
debug处改为:x86
基础结构:
1预处理指令
2main 函数
3返回值
常见的报错:
1编译错误:C开头(compile),如语法错误,scanf使用错误可提前定义宏。
2链接错误:LNK开头(link),如忘记加头文件、函数名错误。
3运行期错误:即BUG,一般为逻辑错误
编译和链接
分为4个步骤:预处理,编译,汇编,链接
进程的虚拟内存空间
进程:正在运行的一个程序。
程序经过以上4步后生成可执行文件,被操作系统加载到内存中得以运行,即一个进程。每个进程都有自己的虚拟内存空间。其结构如下图所示:
变量和赋值
变量:在执行程序过程中临时存储数据的数据单元,用于在产生输出前进行其他的操作。
类型:用于说明变量所存储数据类型的种类。每个变量必须有1个类型。类型定义了值的范围(通过编码和内存大小),定义了能够进行的操作。
使用变量前必须声明,格式为:
类型 变量名;
几个相同类型的变量可以合并声明。
通过赋值操作让变量获取值,int类型赋值整数,float\double赋值浮点数,通常在浮点数后加类型缩写字母,如:profit = 2150.48f;
变量被赋值后可以用来计算其他变量的值。
可以用printf函数显示变量的值,如:
初始化
没有默认值且尚未在程序中被赋值的变量是未初始化的,访问这样的变量可能会使编译器发生错误,因此我们可以在声明变量的同时赋值,赋值号右侧成为初始化式(initializer),同一个类型的变量可以在同一个语句中进行初始化,如:int height = 8, length = 12, width = 10;
标识符
标识符(identifier):对程序中变量、函数、宏等内容的命名。其必须以字母或下划线开头,可以包含数字、字母和下划线。
C语言中标识符区分大小写,常见的两种命名方法:
1.全部使用小写字母,单词间用_分隔,如:symbol_table, current_page, name_and_address
2.驼峰命名法:不使用下划线,单词首字母大写,如:symbolTable, currentPage, nameAndAddress
关键字
C编译器会特殊读取的32个名称,无法作为标识符使用:
数据类型关键字(12个):int,short,long,float,double,char,void,signed,unsigned,struct,union,enum。
控制语句关键字(12个):
循环(5个):for,do,while,break,continue
条件(3个):if,else,goto
开关(3个):switch,case,default
返回(1个):return
存储型关键字(5个):auto,extern,register,static,typedef
其他关键字(3个):const,sizeof,volatile
C99:restrict,_Complex,_Bool,inline,_Imaginary