C语言学习回顾总结

回顾:
1.数据结构
a)栈:stack
先进后出
后进先出
只操作栈顶
b)队列:queue
先进先出:FIFO
入队操作队尾
出队操作队首
c)单链表:list
struct student {
描述学生信息的字段;
struct student *next;
};
d)双链表:list
struct student {
描述学生信息的字段;
struct student *next;
struct student *prev;
};
e)有序二叉树(又称二叉查找树)
先序/中序/后序
递归方式


2.常见的排序算法(数学)
2.1.冒泡排序算法
2.2.插入排序算法
2.3.选择排序算法
2.4.快速排序算法

3.两种查找算法:
3.1.顺序查找
3.2.折半(二分)查找:排序后分半找


4.C语言串烧:
4.1.C程序编程框架
int main(int argc, char *argv[]/*char *argv/)
{
程序语句
return 0;
}
4.2.C程序编译方式
流氓/分步/一步到位/Makefile
4.3.信仰:程序玩的是内存
首先要想到程序要分配内存
4.4.C程序分配内存的方式:四种
定义变量
定义数组
定义结构体
动态分配函数:malloc/free
归根结底都是研究变量(单位)!
4.5.变量的数据类型:基本数据类型和自定义数据类型
基本数据类型:12类:char…double
自定义数据类型:struct/union/enum/函数指针(回调函数,函数指针数组编程框架)
4.6.可以用typedef给数据类型取别名:typedef终极的三种形式:
1.针对基本数据类型
typdef char s8;

typdef double f64;
2.针对结构体
typedef struct … {

     }别名_t;
     struct ... {

    };
    typedef struct ..... 别名_t
 3.函数指针
    typedef 返回值类型(*别名_t)(形参表); 

4.7.变量的作用域和可见性
变量终极四类:局部非静态,局部静态,全局非静态,全局静态
4.8.两个关键字:static和const
static修饰变量
static修饰函数
static降低乱序访问的概率
const:变量常量化,常量指针,指针常量,常量指针常量
4.9.变量的操作符
算术运算符:+ - * / %
赋值运算符:=
复合运算符:=和别的运算符结合
关系运算符:> < >= <= != ==,结果:1真;0假
自增自减: ++ –
逻辑运算符:&& || !,结果:非0真,0假
位运算符:& | ^ ~
两个公式: A &= ~(…) A |= (…)
移位运算符:<< >>
条件运算符: ? :
4.10.进制转换
计算器:2/8/10
口算:2/16
4.11.变量三大操作流程:
顺序:上到下
分支:if/if…else/if…else if … else if/if …else if …else/switch…case
循环 : for/while/do…while
break,continue
4.15.函数
四种形式:return void
参数个数建议小于等于4个
函数形参是变量
函数形参是数组
函数形参是结构体
结论:函数修改实参, 必须传递指针,如果只是查看,建议还是指针,必须用const修饰
指针函数:不能返回局部非静态变量的地址(野指针)

4.16.指针
快速修改内存
运算符:&,*
指针和变量
指针和数组:指针指向数组的首地址等价于指针指向数组的第一个成员的首地址
指针和结构体:指针指向结构体的首地址等价于指针指向结构体中第一个成员的首地址
指针和函数:指针指向函数等价于指针指向函数中第一条语句的首地址
NULL空指针,野指针
无类型指针void *
指针运算
二级指针处理字符串
指针数组

4.17.字符串
指针和字符串
数组和字符串
字符指针数组
strcpy/strcmp/strlen/strcat/strtoul/sprintf

4.18.预处理指令:绝招:-E
#include
#define
提高代码可读性
替换
宏常量
宏函数和函数:
宏函数执行效率比函数高
宏函数不像函数一样便于代码的调试跟踪
#,##

__FUNCITON__, __FILE__
             -D
             #if #ifdef ....#endif

4.19.大型程序实现
头文件搞声明
源文件搞定义
主文件搞调用
Makefile搞编译

4.20.结构体
结构体嵌套结构体变量
结构体嵌套结构体指针
结构体嵌套函数指针

4.21.注意:
指针用法1:
int a = 250;
int *p = &a;
*p = 520;

指针用法2:
int a = 250;
unsigned long p = (unsigned long)&a;
*(int *)p = 520;

指针用法3:不确定,32位可以,64绝对不行
int a = 250;
unsigned int p = (unsigned long)&a;
*(int *)p = 520;

4.22.推荐学习网站:多多参与开源项目:github.com(全球最大的开源软件托管中心)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值