欢迎光临散文网 会员登陆 & 注册

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

2023-01-02 16:47 作者:废物学短  | 我要投稿

啊啊啊啊,这篇笔记因为B站的bug丢失了同时被替换成我的另一篇笔记的内容了,

啊啊啊啊啊,我记的笔记没了,呜呜呜,那么长那么长的笔记,我学了3个月的成果啊


1.字符数组和字符指针 区别


00:55
视频源不见了,标记失效


一个是字符串常量,一个是字符数组。

它们最根本的区别是:在内存中的存储区域不一样,字符数组存储在全局数据区栈区第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。

内存权限的不同导致的一个明显结果就是,字符数组在定义后可以读取和修改每个字符,而对于第二种形式的字符串,一旦被定义后就只能读取不能修改,任何对它的赋值都是错误的。

指针没有开辟新的存储而是直接指向字符串常量地址(常量地址无法改变),但是数组是复制字符串内容开辟新存储是在新存储区进行改变

字符串数组和字符串指针的使用和区别_Robben.Han的博客-CSDN博客

动态是堆,静态是栈

指针指向的首字符的地址,而后面的值固定在一定内存,指针只是通过首字符找到固定在内存的值

指针指向的地址的hi是在程序运行时就插进来的,他可以是内存中任意一个值如果改了,其他数组用这个值也是改之后的值

2.动态内存分配


05:48
视频源不见了,标记失效


2.1malloc()

在内存的动态存储区(堆)中分配一个长度为size的连续空间。其参数是一个无符号整数,返回值是一个系统所分配的,连续内存空间的起始地址。

void *malloc(size_t size)
  • void * xxx---------无类型的指针(有类型,但是暂时不确定)
  • 在<malloc.h>和<stdlib.h>的头文件里
  • 用molloc申请的空间是动态的,给指针,指针可以改变动态空间的值,这个和char a[10]等价,所以可以改

2.2 free()


13:55
视频源不见了,标记失效


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

3.链表


16:28
视频源不见了,标记失效



24:31
视频源不见了,标记失效


声明变量能否在中间,这个和C标准有关系

具体看代码:(注释后)

"C:\Users\31677\Desktop\apps\QNAP_HybridBackupSync\C\C语言入门教程\课程ppt及源代码\第13讲 动态内存分配和链表 链表2.cpp"

需要联系QQ:1366480672



。。。待续

51单片机入门教程-2020版 程序全程纯手打 从零开始入门的评论 (共 条)

分享到微博请遵守国家法律