本文的记录皆为快速学习C语言的一个路线,其中许多内容了解即可。
PS:本文中所有代码配置环境为:Windows 10 + VS2013
(使用的都是.cpp文件,不是.c)
进制介绍
参考文章:
C语言进制介绍
循环操作
参考文章:
C语言打印五角星(源码)
数组操作
数组介绍:
- 优点:
1.随机访问性强
2.查找速度快- 缺点:
1.插入和删除效率低
2.空间利用率不高
3.内存空间要求高,必须有足够的连续内存空间。
4.数组大小固定,不能动态拓展- 使用场景:
1.数据比较少
2.经常做的运算是按序号访问数据元素
3.数组更容易实现,任何高级语言都支持
4.构建的线性表较稳定。
参考文章:
C_数组and字符串操作记录
C_数组and二维数组(扫雷地图)操作记录
指针操作
参考文章:
C_指针(一级指针交换值操作)
函数操作
PS:
1、自定义函数中的参数,无法修改"形参"中的值
2、特殊情况:“实参指针"指向"形参”,会改变"形参"中的值
函数介绍
- 主函数中参数名为:形参
- 自定义函数中的传参为:实参
变量介绍
- 局部变量: { } 以内定义的变量统称为 局部变量。
使用范围:{ }以内,
生存周期;出 { } 结束(自动释放变量)- 全局变量: 主函数以外 and { }以外定义的变量,统称为 全局变量。
使用范围:全局可以调用;
生存周期:直到程序结束;- 静态变量: 凡是 static 定义的变量,统称为 静态变量。
使用范围:是局部的;
生存周期:全局的(直到程序结束)
函数传参表格参考
- 指针:“定义一个指针变量"指向所"获取变量的地址”
定义方式:int *p; (PS:“&” and "[]"都具有取地址的作用,)- 指针数组介绍:里面存的都是"指针"指向的"地址";
定义方式:int *ppArr[10];- 数组指针介绍:通过"指针"的方式指向数组中的二维数组;
定义方式:int(*pdArr)[6];
实参 | 形参定义方式 | 注释 |
---|---|---|
int x | int x | 实参类型要与实参类型一样 |
&x | int*p | 此方法可以通过形参修改实参的值 |
int arr[5] | int parr[] 或 int*parr | 一维指针 对应 一级指针 |
int dArr[5][6] | int pdArr[][6] 或 int(*pdArr)[6] | 二维数组 对应 数组指针 |
int *ppArr[10] | int*pp[] 或 int **pp | 指针数组 对应 二级指针 |
参考文章:
C_函数and指针传参and返回值操作
C_函数and回调函数(汉诺塔小游戏)
结构体 and 枚举
关键词:结构体(struct)、联合结构体(union)、枚举(enum)
PS: 联合结构体 and 枚举 在开发中很少使用,相关介绍在文中,
参考文章:
C_结构体(图书修改)
C_联合结构体(union)and枚举(enum)使用
文件操作
PS: 打开了文件 就一定 要关闭
- 打开关闭操作函数:
1、打开文件:fopen(“文件名+后缀”,“打开格式”) 函数
2、关闭文件:fclose(文件指针)函数
PS:
1、fprintf() 函数 and fscanf() 函数 需要搭配使用
2、fputs() 函数 and fgets() 函数 需要搭配使用
- 字符串操作函数:
- 字符串写入:
1、fprintf(文件指针,"文件格式’',变量) 函数
2、fputs(“内容”,文件指针) 函数- 字符串读取:
2、fscanf(文件指针,"文件格式’',变量) 函数
3、fgets(“内容”,文件指针) 函数- 单字符操作函数:
- 单字符写入:
1、fputc(data,文件指针) 函数- 单字符读取:
2、fgetc(文件指针) 函数
注释:
(1)SEEK_SET从开头开始偏移
(2)SEEK_CUR从当前位置开始偏移
(3)SEEK_END从结尾开始偏移
- 文本指针偏移操作函数:
1、fseek(文件指针, 偏移量, best);
打开格式(简介):
打开格式 | 注释 |
---|---|
r | 只读的方式打开 1、如果没有则返回NULL 2、有文件则打开文件 |
w | 写入的方式打开 1、如果没有则新建文件 2、有文件则清空后在写入内容 |
a | 追加的方式打开 1、如果没有则新建文件 2、有文件则在内容的末尾处写入新内容 |
+ | 以读写的形式打开 |
t | 以文本的形式打开 (没选择二进制打开,默认以文本形式打开) |
d | 以二进制的形式打开 |
打开格式(一般使用方法):
打开格式 | 注释 |
---|---|
rt+ | 以读写的形式打开文本文件 1、如果没有则返回NULL 2、有文件则打开文件 |
wt+ | 以读写的形式打开文本文件 1、如果没有则新建文件 2、有文件则清空后在写入内容 |
at+ | 以读写的形式打开文本文件 1、如果没有则新建文件 2、有文件则在内容的末尾处写入新内容 |
rd+ | 以读写的形式打开二进制文件 1、如果没有则返回NULL 2、有文件则打开文件 |
wd+ | 以读写的形式打开二进制文件 1、如果没有则新建文件 2、有文件则清空后在写入内容 |
ad+ | 以读写的形式打开二进制文件 1、如果没有则新建文件 2、有文件则在内容的末尾处写入新内容 |
参考文章
C_文件操作(图书信息存储)
顺序表 栈 队列 链表
简介
静态数组优缺点:
- 缺点:
1、栈区小放不了太多数据
2、数组大小不能改变- 优点:
1、可以通过下标访问快速实现更改数据
2、自动释放内存
动态数组优缺点
- 缺点:
1.如果有一个数据 插入 重新申请内存 所有数据都要移动一次
2.插入删除不便
3.需要主动释放内存
4.申请大的空间可能会申请失败- 优点:
1.大小不固定,可以灵活扩展
栈优缺点:
- 优点:
后进先出
队列优缺点:
- 优点:
先进先出
链表优缺点:
- 缺点:
1.不能随机查找,必须从第一个开始遍历,查找效率低- 优点:
1.增加一个数据 就申请一个节点(插入删除速度快)
2.删除数据时不影响其他节点
3.每次申请空间都比较小(申请失败可能性小)
4.内存利用率高,不会浪费内存(大小没有固定,拓展很灵活)- 使用场景
1.对线性表的长度或者规模难以估计
2.频繁做插入删除操作
3.构建动态性比较强的线性表。
参考文章
C_顺序表(指定增删改查)
C_顺序表(动态数组插入)
C_栈(进制转换)
C_队列(插入输出)
C_链表(单链表基本功能实现)