记录一下C语言基础2

春节期间把 郝斌老师的C语言视频教程又过了一遍,回归最初梦开始的地方:

学习的链接:https://www.bilibili.com/video/av8074534

直接开始补充些容易忽视的知识点:

如果想将一个整数 转换为 一个十六进制数据显示
在使用print的时候 格式在X前面添加一个# =》 格式为 #X
例如 十进制33 转换为 0x21
int value = 33;
print("%#x",value);
输出的结果:0x21

递归
    递归的核心就是压栈和出栈
    例如 函数A调用函数B
        分析:首先将函数B的形参压栈 计算 输出结果 出栈
        
使用malloc函数注意的问题
例如:
    int *p = (int*)malloc(4);
    分析:
        1.要使用malloc函数,必须添加头文件 malloc.h
        2.malloc函数只有一个形参,并且形参是整数
        3.形参4表示请求系统为本程序分配4个字节
        4.malloc函数只能返回第一个字节的地址
        5.上面那个例子分配了8个字节的存储区域 p变量占4个字节,p所指向的内存也占4个字节
        6.p本身所占的内存是静态的,p指向的内存是动态分配的
    free(p);
    分析:
        1.表示把p所指向的内存区域给释放,p本身的内存是静态的当所在函数执行完毕后,由系统回收

关于堆栈的基本理解
栈区:存储变量,形参,内存由系统管理
堆区:使用malloc或者new 来进行内存分配,谁分配谁释放

https://www.bilibili.com/video/av8074534?p=148

定义结构体
struct Student
{
    int age;
    float score;
    char sex;
};
typedf struct Student student;

student stu = {10,66.6f,'F'};
student *stu2 = &stu;
这只是定义一个数据类型;
使用方式: struct Student 变量名
两种取值的方式 
    1.变量名.成员 例如 stu.age
    2.结构体指针变量->成员    例如 stu2->age 等价于(*stu2).age


10.1 这个数据在C语言中默认为double类型,如果需要表示为float类型
则在数据末尾添加一个f来表示类型为float类型
10.1f

指针的重要性:
1.表示一些复杂的数据结构
2.快速的传递数据,减少了内存的消耗
3.使函数返回一个以上的值
4.能直接访问硬件
5.能够方便的处理字符串
6.是理解面向对象语言中引用的基础
是C语言的灵魂


枚举:
enum 变量名{ 值};
只是定义了一个数据类型
例如:enum Value{A=1,B,C,D,E,F,D};
那么B就是2 C就是3 以此类推
typedef enum Value FFF;
FFF value = A;

链表
优点:
    插入删除元素效率高
    不需要一个连续的很大的内存
    
缺点:
    查找某个位置的元素 效率低


专业术语:
头节点:
    头节点的数据类型和首节点的数据类型是一模一样的
    头节点是首节点前面的那个节点
    头节点不存放有效数据
    设置头节点是为了方便对链表的操作
    
首节点:
    存放第一个有效数据的节点
    
尾节点:
    存放最后一个有效数据的节点
    
头指针:
    存放头节点地址的指针变量
    
确定一个链表 只需要一个参数 头指针

おすすめ

転載: blog.csdn.net/Wuzm_/article/details/104395982