自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 从零开始 学习C/C++的第二十二天 文件读写

11.30枚举:enum 枚举是一种数据类型,把可能出现的值一一罗列出来,并给其起有意义的名字,如果给该类型的变量赋其它的数值则认为是非法的(愿望) enum 枚举名 { 成员名=val, ... }; 枚举可以看做是一种值受限的int类型,但是c编译器为了效率并不检查,所以C语言中枚举可以当做int类型变量一样使用(锦上添花) 如果不给成员值,枚举成员的值默认从0开始,依次+1,如果中间某个成...

2021-11-30 20:24:46 511

原创 从零开始 学习C/C++的二十一天 结构体

11.29 结构体结构: 结构是由程序员自己设计的一种数据类型,用于描述一个事物的各项信息,由若干个不同的基础数据类型组成。 设计: struct 结构名 { 类型 成员名; ... }; 定义结构变量: struct 结构名 结构变量名; 注意:定义结构变量时,不能省略struct 定义结构变量并初始化 struct 结构名 结...

2021-11-29 18:33:54 719

原创 从零开始 学习C/C++的第二十天 头文件

11.25 头文件头文件中应该有什么? 问题:一个头文件可能被任何的源文件包含,意味着多个头文件内容可能出现在多个目标文件中,链接合并时可能会冲突 重点:头文件中不能有定义语句,只能编写声明语句 全局变量声明 函数声明 宏常量 宏函数 typedef 类型重定义 结构,联合,枚举的类型声明 头文件的编写要求: 1.为每个.c文件写一份.h...

2021-11-29 18:32:49 486

原创 从零开始 学习C/C++的第十九天 预处理指令 宏

11.2411.24预处理指令: 程序员所编写的代码并不能被编译器真正编译,需要一段程序把代码翻译一下 翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的语句叫做预处理指令,以#开头的语句都是预处理指令 查看预处理结果: gcc -E xxx.c 把预处理的结果显示到终端 gcc -E xxx.c -o xxx.i 把预处理的结果存储到.i预处理文件中 预处理指令的分类: #inclu...

2021-11-25 09:59:29 112

原创 从零开始 学习C/C++的第十八天 通讯录

11.23#include <stdio.h>#include <string.h>#include <stdlib.h>#include <get_keyboard.h>char name[50][20];char sex[50][2];char phone[50][12];int cnt=0;int search(char* str){ int flag = 0; for (int i=0;i<cnt;i+...

2021-11-25 09:57:10 377

原创 从零开始 学习C/C++的第十七天 字符串2

11.22输入缓冲区: 程序并不会立即获取键盘上输入的数据,当按下回车键程序才会从输入缓冲区中读取数据 1.当读取整型或者浮点型数据时,而如果此时缓冲区中的数据是字母或符号时,此时会读取失败,数据会继续残留在缓冲区中,就会影响接下来的所有数据的读取 解决方法: 判断scanf的返回值,如果返回值小于要接受的变量的个数,则先清空输入缓冲区,再重新scanf接收,直到全部成功接收为止 2.fgets可以指定读取size-1个字符,...

2021-11-22 18:34:06 478

原创 从零开始 学习C/C++的第十六天 字符串

11.19复习:常见笔试面试题: 1.堆内存与栈内存的区别 是什么,有什么用,优缺点,注意事项 谁管理,大小,使用,安全性 2.堆内存越界的后果 脏数据 超过33页产生段错误 破坏malloc的维护信息,影响下一次的malloc,free 3.什么是内存泄漏,如何定位内存泄漏 由于程序的业务逻辑问题或者粗心大意导致使用完毕的内存没有释放,当再次需要时又重新申请,又...

2021-11-19 18:14:00 471

原创 从零开始 学习C/C++的第十五天 堆内存

11.18malloc的内存管理机制: 当首次向malloc申请内存时,malloc会向操作系统申请内存,操作系统会直接分配33页(1页 = 4096字节)内存给malloc管理,但不意味着可以越界访问,因为malloc会把剩余的内存分配给其他人,这样就可能产生脏数据 每个堆内存块之间有一些空隙(至少4字节),这些空隙一部分是为了内存对齐,其中有4字节是为了记录malloc必要的维护信息,这些维护信息决定了下次分配内存的位置 如果维护信息被破坏,会影响下一次mal...

2021-11-18 17:08:54 446

原创 从零开始 学习C/C++的第十四天 指针2

11.16指针数组与数组指针: 指针数组: 是由指针变量组成的数组,它的成员都是类型相同的指针变量 int* arr[长度] 数组指针: 专门指向数组的指针 int (*arrp)[长度] 注意:一般在使用堆内存时,可能会使用它们来定义二维数组指针与数组名: 数组名就是一种特殊的指针,它是常量,不能修改它的值,它与数组的内存首地址之间是映射关系,它是没有自己的存储空间 ...

2021-11-16 19:38:04 54

原创 从零开始 学习C/C++的第十三天 指针

11.15什么是指针: 指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整形数据,代表的是内存的编号,通过这个编号可以访问对应的内存。为什么要使用指针: 1.函数之间是相互独立,但是有些时候需要共享变量 传参是单向值传递 全局变量容易命名冲突 使用数组还需要额外传递长度 虽然函数之间命名空间是独立的,但是地址空间只有同一个,所以使用指针可以解决这个问题 2.由于函数之间传...

2021-11-15 18:33:53 983

原创 从零开始 学习C/C++的第十二天 函数递归

11.12函数递归: 函数自己调用自己的行为就叫函数递归,可能会导致死循环,资源耗尽的情况发生 递归是分治算法的具体实现,就是把一个大而复杂的问题,分解若干个相同的小问题,直到问题全部解决 1.出口 2.解决一个小问题 3.调用自己 如何使用递归实现第N项斐波那契数列 1 1 2 3 5 8 13... 递归调用函数每一次递归调用都会在栈内存产生一份自己的拷贝,直到到达出口,才一层层向上释放栈内存,因此使...

2021-11-15 18:32:12 418

原创 从零开始 学习C/C++的第十一天 编写五子棋

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <get_keyboard.h> //自定义的头文件,用来获取键盘的键值,在文章的最下面,(复制文本到记事本,在名字后加上.h后缀即可调用)// 定义棋盘char board[15][15];// 棋子坐标,初始化光标的位置在棋盘的中心int key_x=7,key_y=7;/...

2021-11-12 19:28:12 734

原创 从零开始 学习C/C++的第十天 类型限定符

类型限定符 11.10进程(内存)映像: 程序:是存储在磁盘上的可执行文件(二进制文件,脚本文件) 进程: 正在系统中运行的程序,可以同时存在多个进程 进程映像就是进程的内存分布情况 text 代码段 存储的是二进制指令,常量,权限是只读,如果强制修改会产生段错误 data 数据段 存储初始化过的全局变量,初始化过的静态局部变量 bss 静态数据段 存储未初始化过的全局变...

2021-11-10 20:26:03 564

原创 从零开始 学习C/C++的第九天 函数调用

11.9系统函数 是操作系统以函数的形式提供的一些功能,系统函数不能算是真正的函数,这些功能包括: 内存管理,文件IO,信号处理,文件管理,进程管理,进程通信,线程管理,线程同步,网络通信第三方库函数 一些开源或者收费的大三方代码 glog 日志记录 MD5 验证自定义函数 为了更方便地管理代码,减少代码沉余,把代码封装成函数的形式使用 函数声明: 函...

2021-11-09 20:21:14 370

原创 从零开始 学习C/C++的第八天 进制转换和常用函数

进制转换 11.8进制转换: 为什么要使用二进制,八进制,十六进制: 因为现在的cpu只能识别高低两种电平,只能对二进制的数据进行计算 二进制数据虽然可以被计算机识别计算,但是不方便书写,记录,把二进制的数据转换成八进制为了方便把数据记录在文件中 由于cpu的位数不断增加,由早期的8位逐渐增加到现在的64位,因此8进制不再符合需求了,所以才发展出了16进制,由于历史原因,八进制还不能退出历史舞台 十进制转二进制: ...

2021-11-08 19:49:44 97

原创 从零开始 学习C/C++的第七天 二维数组

二维数组 11.3二维数组: 一维数组可以看成把变量排成一排,通过编号访问 二维数组相当于把变量排成一个矩阵,通过行号和列号访问 定义: 类型 数组名[行数][列数]; int arr[3][5]; [0,0],[0,1],[0,2],[0,3],[0,4] [1,0],[1,1],[1,2],[1,3],[1,4] [2,0],[2,1],[2,2],[2,3],[2,4]...

2021-11-03 18:47:55 599

原创 从零开始 学习C/C++的第六天

今天主要学习的内容时跳转语句和数组11.2 标准C语言 DAY06跳转语句: break 1.与switch配合,关闭执行开关 2.与循环配合,调出循环,只能跳出一层循环 continue 结束当前次循环,直接进入下一次循环 return 1.返回一个数据给函数的调用者 2.结束函数的执行 练习1:不使用循环语句,打印出前n项斐波那契数列数组: 什么是数...

2021-11-02 20:51:41 60

原创 从零开始 学习C/C++的第五天

今天学习的主要内容是C语言中的循环语句的用法11.1 标准C语言 DAY0.5一.循环语句: 循环是让一段代码反复执行,最终达到你想要的效果的语法 for循环是一种很灵活且危险(相比其他循环)一种循环语句,一般使用一个变量来引导for循环的运行,被称为循环变量i for ([1];[2];[3]) { [4]; } [1].给循环变量赋初值,只有c99以上才能在此处定义循环变量 例(int i=0); -s...

2021-11-01 18:31:31 63

原创 从零开始 学习C/C++的第四天

今天主要的学习内容是在vim中如何把代码编译成可执行文件,以及C语言中的头文件和数据类型二.编译器 负责把人能看得懂的用代码记录的文本文件,翻译成计算机能看懂的二进制文件,由预处理器,编译器,链接器 gcc是由gnu社区为了编译Linux内核代码而开发的一款免费的编译器,默认采用C89编译语法,-std=gnu99 可以设置为C99语法 gcc code.c -> a.out(可执行文件,二进制文件) 常用的参数: -E ...

2021-10-28 18:45:37 56

原创 从零开始 学习C/C++的第三天

今天学习的主要内容是VIM编辑器的各类命令,以及C语言的历史vim正常模式下的常用操作: 删除代码: x 删除一个字符 nx 删除n个字符 dw/de 删除一个连续的字符串(区别是删不删后面的空格) d$ 从光标处删除到行尾 d^ 从光标处删除到行首 dd 删除光标所在的一行 ndd 删除n行 dgg 从光标处删除到文件开头 ...

2021-10-27 18:40:33 63

原创 从零开始 学习C/C++的第二天

10.26 DAY 2注意:不是所有的功能再Linux/UNIX中都有唯一对应的命令文件相关命令: touch filename 创建文件 rm filename 删除文件,不经过回收站,难以找回,谨慎使用 rm *.o 删除所有后缀带.o的文件 cat/more/head/tail filename 查看文件 cat 会把文件所有内容全部打印到终端,比较适合查看内容较少的文件 more 从文件头开始分页查...

2021-10-26 19:11:07 68

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除