既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
+ 用 malloc 生成的变量/结构体/数组用 free 函数来释放内存
+ free 释放的都是malloc指针指向的内存,而不会删掉指针本身
+ 对空指针应用 free 是安全的
+ 不能用 sizeof 操作符来确定动态分配数组包含的字节数
- 作用: 释放由 malloc,realloc 或者 calloc 开辟的变量空间
realloc函数
-
形式:void *realloc( void *memblock, size_t size );
-
参数:
- memblock 为原来有 malloc 开辟空间的指针
- size 为新开辟时候需要的新的内存区大小,要比 malloc 的大才行
-
注意:
- realloc 返回值是 void 所以必须有强制转换类型 (*typename)realloc
- LEN 为开辟空间的长度,如果为单个变量可用 sizeof(typename) 函数返回一个 typename 类型变量内存空间需要的长度.如果是数组的话其中元素个数为N其内存空间需要的长度为 N*sizeof(typename)
#include<iostream> #include <cstdlib> using namespace std; void main() { int *p=(int*)malloc(sizeof(int)); *p = 5; cout<<"用 malloc 开辟变量空间 :"<<endl; cout<<"指针 p 指向的地址"<<p<<endl; cout<<"指针 p 指向的地址里面的变量值"<<*p<<endl; p =(int*) realloc((void*)p,2*sizeof(int)); *(p+1) = 6; cout<<"用 realloc 重新开辟变量空间 :"<<endl; cout<<"指针 p 指向的地址"<<p<<endl; cout<<"指针 p 指向的地址里面的变量值"<<*p<<endl; cout<<"指针 p+1 指向的地址"<<(p+1)<<endl; cout<<"指针 p+1 指向的地址里面的变量值"<<*(p+1)<<endl; system("pause"); }
输出结果:
用 malloc 开辟变量空间 :
指针 p 指向的地址003B5410
指针 p 指向的地址里面的变量值5
用 realloc 重新开辟变量空间 :
指针 p 指向的地址003B5410
指针 p 指向的地址里面的变量值5
指针 p+1 指向的地址003B5414
指针 p+1 指向的地址里面的变量值6
请按任意键继续. . .- 由于 point_name 为地址,realloc 动态生成的结构体无名称,不能用 *point_name.成员名 来访问成员,但由于 () 优先级高,所以可以用 (*point_name).成员名 来访问
- realloc 先按照 size 分配空间在将原有的数据从头到位拷贝到新分配的区域,然后释放原来的 memblock 指向的内存区域
-
作用: 为变量开辟存储空间
calloc函数
- 形式: void *calloc( size_t num, size_t size );
- 参数:
- num 是要开辟此类变量的个数
- size 是要开辟此类型变量一个需要的空间
- 注意: 并返回指向所分配区域的第一个字节的指针若内存不够则返回 NULL. 该空间的内容全部初始化大小为 0
随机生成数函数
- 形式: int rand( void );
- 返回值: 返回值为 0 至 RAND_MAX 之间的随机数值,RAND_MAX 定义在stdlib.h,其值为2147483647。
- 注意:
- 在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1
- 但是这个只是产生伪随机数,若无明确给出随机数索引种子,每次得到的随机数都一样,可调用srand来初始化rand的随机数种子来解决这个问题
初始化随机函数的种子
- 形式: void srand( unsigned int seed );
- 参数: seed 为无符号整形,用来初始化随机函数的种子
- 注意: 一般都是通过抓起系统时间来做随机函数的种子
srand( (unsigned)time( NULL ) );//记得包含<time.h>头文件
system函数:
- **形式:**int system( const char *command );
system("ping 10.10.10.11 -t")
system("cls")
- 作用: system()函数用于向操作系统传递控制台命令行
- 常用DOS命令:
- ASSOC 显示或修改文件扩展名关联
- AT 计划在计算机上运行的命令和程序
- ATTRIB 显示或更改文件属性
- BREAK 设置或清除扩展式 CTRL+C 检查
- CACLS 显示或修改文件的访问控制列表(ACLs)
- CALL 从另一个批处理程序调用这一个
- CD 显示当前目录的名称或将其更改
- CHCP 显示或设置活动代码页数
- CHDIR 显示当前目录的名称或将其更改
- CHKDSK 检查磁盘并显示状态报告
- CHKNTFS 显示或修改启动时间磁盘检查
- CLS 清屏幕
- CMD 打开另一个 Windows 命令解释程序窗口
- COLOR 设置默认控制台前景和背景颜色
- COMP 比较两个或两套文件的内容
- COMPACT 显示或更改 NTFS 分区上文件的压缩
- CONVERT 将 FAT 卷转换成 NTFS。您不能转换当前驱动器
- COPY 将至少一个文件复制到另一个位置
- DATE 显示或设置日期
- DEL 删除至少一个文件
- DIR 显示一个目录中的文件和子目录
- DISKCOMP 比较两个软盘的内容
- DISKCOPY 将一个软盘的内容复制到另一个软盘
- DOSKEY 编辑命令行、调用 Windows 命令并创建宏
- ECHO 显示消息,或将命令回显打开或关上
- ENDLOCAL 结束批文件中环境更改的本地化
- ERASE 删除至少一个文件
- EXIT 退出 CMD.EXE 程序(命令解释程序)
- FC 比较两个或两套文件,并显示不同处
- FIND 在文件中搜索文字字符串
- FINDSTR 在文件中搜索字符串
- FOR 为一套文件中的每个文件运行一个指定的命令
- FORMAT 格式化磁盘,以便跟 Windows 使用
- FTYPE 显示或修改用于文件扩展名关联的文件类型
- GOTO 将Windows命令解释程序指向批处理程序中某标明行
- GRAFTABL 启用 Windows 来以图像模式显示扩展字符集
- HELP 提供 Windows 命令的帮助信息
- IF 执行批处理程序中的条件性处理
- LABEL 创建、更改或删除磁盘的卷标
- MD 创建目录
- MKDIR 创建目录
- MODE 配置系统设备
- MORE 一次显示一个结果屏幕
- MOVE 将文件从一个目录移到另一个目录
- PATH 显示或设置可执行文件的搜索路径
- PAUSE 暂停批文件的处理并显示消息
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新