51单片机入门教程-2020版 程序全程纯手打 从零开始入门

啊啊啊啊,这篇笔记因为B站的bug丢失了同时被替换成我的另一篇笔记的内容了,
啊啊啊啊啊,我记的笔记没了,呜呜呜,那么长那么长的笔记,我学了3个月的成果啊
1.字符数组和字符指针 区别

一个是字符串常量,一个是字符数组。
它们最根本的区别是:在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
内存权限的不同导致的一个明显结果就是,字符数组在定义后可以读取和修改每个字符,而对于第二种形式的字符串,一旦被定义后就只能读取不能修改,任何对它的赋值都是错误的。
指针没有开辟新的存储而是直接指向字符串常量地址(常量地址无法改变),但是数组是复制字符串内容开辟新存储是在新存储区进行改变
字符串数组和字符串指针的使用和区别_Robben.Han的博客-CSDN博客
动态是堆,静态是栈
指针指向的首字符的地址,而后面的值固定在一定内存,指针只是通过首字符找到固定在内存的值
指针指向的地址的hi是在程序运行时就插进来的,他可以是内存中任意一个值如果改了,其他数组用这个值也是改之后的值

2.动态内存分配
2.1malloc()
在内存的动态存储区(堆)中分配一个长度为size的连续空间。其参数是一个无符号整数,返回值是一个系统所分配的,连续内存空间的起始地址。
void *malloc(size_t size)
- void * xxx---------无类型的指针(有类型,但是暂时不确定)
- 在<malloc.h>和<stdlib.h>的头文件里

- 用molloc申请的空间是动态的,给指针,指针可以改变动态空间的值,这个和char a[10]等价,所以可以改
2.2 free()

比如可以利用main()执行完,返回父函数,因为栈空间满了,溢出的数据吧main的返回地址覆盖了,所以程序会执行覆盖main返回地址的溢出的数据当指令执行
3.链表


声明变量能否在中间,这个和C标准有关系
具体看代码:(注释后)
"C:\Users\31677\Desktop\apps\QNAP_HybridBackupSync\C\C语言入门教程\课程ppt及源代码\第13讲 动态内存分配和链表 链表2.cpp"
需要联系QQ:1366480672
。。。待续