
笔记
喝可乐的猫?
这个作者很懒,什么都没留下…
展开
-
C语言之函数调用机制
函数调用机制 局部变量占用的内存是在程序执行过程中“动态”地建立和释放地,通过栈由系统自动管理进行的 当任何一个函数调用发生时,系统都要做一下工作: (1)建立栈空间 (2)保护现场:主调函数运行状态金额返回地址入栈 (3)为被调函数中的局部变量分配空间,完成参数传递 (4)执行被调函数函数体 (5)释放被调函数中局部变量占用的栈空间 (6)恢复现场:取主调函数运行状态及返回地址,释放栈空间 (7)继续主调函数后续语句 ...原创 2022-01-09 22:17:46 · 380 阅读 · 0 评论 -
算法---八大排序
算法 1.冒泡排序 //冒泡排序 //时间复杂度O(n^2) //空间复杂度O(1) //稳定性:稳定 void Swap(int* ap, int* bp) { assert(ap != NULL && bp != NULL); if (*ap > *bp) { int tmp = *ap; *ap = *bp; *bp = tmp; } } void BubbleSort(int* arr, int len) { assert(arr != NULL);原创 2021-11-17 01:22:34 · 156 阅读 · 1 评论 -
数据结构---不定长顺序表
头文件 #pragma once typedef int ELEM_TYPE; #define INIT_SIZE 10 typedef struct DSQlist { ELEM_TYPE* data;//malloc申请的动态内存 int length; int listsize;//保存当前最大容量个数(以sizeof(ELEM_TYPE)为单位) }DSQlist, * PDSQlist; //初始化 void Init_sqlist(PDSQlist plist);原创 2021-10-26 14:43:08 · 93 阅读 · 0 评论 -
C语言实现扫雷游戏---位运算
//扫雷游戏 #define ROWSIZE 12 #define COLSIZE 12 #define MINESIZE 64 #define SHOWINIT 0x80 //@ #define MAKEMINE 0x40 #define SHOWMINE 0x20 //# #define MAKESUM 0x10 #define SHOWSUM 0x0F #define CLEARINIT 0x7f //0111 1111 #define CLEARMINE 0xDF typedef un原创 2021-10-06 01:45:49 · 397 阅读 · 0 评论 -
8_11上机课
int Peach() { int tmp = 1; for (int i = 10; i > 1; --i)//逆推的次数 //for(int i = 1;i<=10;++i) { tmp = (tmp + 1) * 2; } return tmp; } void Match() { for (char a = 'x'; a <= 'z'; ++a) { for (char b = 'x'; b <= 'z'; ++b) { for (c原创 2021-10-06 01:44:12 · 76 阅读 · 0 评论 -
顺序栈的实现
typedef struct Stack { ELEM_TYPE* base; int top; int stacksize; }Stack, * PStack; void Init_Stack(PStack ps); bool Push(PStack ps, ELEM_TYPE val); bool Pop(PStack ps, ELEM_TYPE* rtval); bool Top(PStack ps, ELEM_TYPE* rtval); int Get_Lengt原创 2021-10-06 01:41:04 · 93 阅读 · 0 评论 -
C语言数据类型
数据类型 1.基本类型 字符型char 整型 short,int ,long ,unsigned 实型(单精度型float,双精度型double) 枚举类型enum 2.构造类型 数组类型 [ ] 结构体类型 struct 共用体类型 union 3.指针类型 * 4.空类型 void 整形类型 char;//1 short;//2 int;//4 long int;//4 long long;//8 unsigned char;//1 unsigned short;//2 unsigned in原创 2021-10-05 15:10:02 · 163 阅读 · 0 评论 -
RedisList
1.函数指针 主要目的是泛型,提高通用性 char ch = 'a'; char *p = &ch; char **sp = &ch; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-01XgpXPI-1632805181133)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210908160437452.png)] int main() { const char原创 2021-09-28 13:00:28 · 86 阅读 · 0 评论 -
HashTable
理想的情况,希望不经过任何比较,一次存取便能得到所查记录,在记录存储位置和它的关键字之间建立一个确定的对应关系f,对于关系f称为哈希函数 在查找时,根据这个对应关系f找到给定值K 的像 哈希表 #define NIL -1 #define m 13 typedef int KeyType; struct ElemType { keyType key;//关键码 void *ptr;//value }; typedef struct { ElemType data[m]; in原创 2021-09-28 12:58:48 · 106 阅读 · 0 评论 -
malloc
双链表 typedef int ElemType; typedef struct DuListNode { struct DuListNode*prev; struct DuListNode*next; ElemType data; }DuListNode; typedef struct { struct DuListNode*head; int cursize; }DuLinkList; DuListNode* FindValue(DuLinkList* pli原创 2021-09-28 12:57:00 · 136 阅读 · 0 评论 -
2021-7-1
栈区的空间是自动进行分配和释放的,由系统进行 int main() { int a;//内存随机分配,随机值 int* p;//野指针 int* s = NULL;//0 int* s = nullptr;//(void*)0 } 失效指针:原来指向这个空间是有效的,随着程序的运行,变成无效的。 int* fun() { int ar[10] = { 12,23,34,45,56,67,78,89,90,100 }; int* p = &ar[0]; return p; } int原创 2021-08-14 10:25:46 · 157 阅读 · 0 评论 -
2021-7-29 指针
指针 void Swap_Int(int* ap, int* bp) { assert(ap != nullptr && bp != nullptr); int tmp = *ap; *ap = *bp; *bp = tmp; } void Move_K(int* ar, int n, int k) { assert(ar != nullptr); k = k % n; Reverse_Ar(ar, 0, k - 1); Reverse_Ar(ar, k, n - 1);原创 2021-08-06 12:46:14 · 80 阅读 · 0 评论 -
2021-7-27
printf 和 puts() 等价,printf有回车,puts()没有回车,除非函数带回车 \0 空字符 int main() { char stra[] = "yhping"; char strb[] = { 'y','h','p','i','n','g' }; int lena = sizeof(stra);//7 int lenb = sizeof(strb);//6 lena = strlen(stra);//6 lenb = strlen(strb);//>6 /原创 2021-08-04 18:15:29 · 81 阅读 · 0 评论 -
2021-7-25
定义的是指针变量,存放的是地址这个值 int* fun() { int ar[10] = { 12,23,34,45,56,67,78,89,90,100 }; //如果数组开辟空间很大,可正常打印 //没有对原来的数据进行覆盖 int* p = ar; return p; } int main() { int* p = fun(); //调用完之后,将空间还给栈,此时指针已失效,没有所指的空间 for (int i = 0; i < 10; ++i) {原创 2021-08-03 13:18:58 · 120 阅读 · 0 评论 -
2021-7-23指针
指针 int main() { int a = 10, b = 20; int* p = &a; *p = 100; p = &b; } const修饰的是指针指向的值,不可改变;但是自身的值可以改变 int main() { int a = 10,b = 20; const int* p = &a; //int const* p = &a;与上面的式子等价,const修饰的是指针指向的值 //int x = *p; //*p = 100;//erro原创 2021-08-02 09:31:35 · 94 阅读 · 0 评论 -
第二次上机课
#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<ctype.h> int Statistics(const char* str) { assert(str != nullptr); int alpha = 0; int blank = 0; int num = 0; int other = 0; while (*str != '\0') { if (isalph原创 2021-07-31 11:47:27 · 87 阅读 · 0 评论 -
2021-7-22
指针与数组 void fun(int* p)//*p = *&x = x { *p += 100; } int main() { int x = 0; int* s = &x;//把x的地址给s fun(s);//&x fun(&x);//与上面表达式等价//s = &x; } 指针的两种状态: int a = 10; int *p = &a; int *p = nullptr;//空 低地址作为变量的首地址 值传递 形参不改变实参原创 2021-07-29 00:55:41 · 114 阅读 · 0 评论 -
2021-7-20
看不懂 #include<stdio.h> int main() { int a[5] = { 1,2,3,4,5 }; int* p = (int*)(&a + 1); printf("%d", *(p - 1)); return 0; } mov ebx,10h;---直接访问 mov [ebx],10h;---间接访问 数据存放在内存中,,内存中字节的编号称为地址(指针), 地址从0开始,依次增加,对于32位环境,程序能够使用的最大内存为4GB 最小:0x000原创 2021-07-25 17:54:43 · 509 阅读 · 0 评论 -
2021-7-17
数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中 <类型>数组名[元素数量]—大于0的整数常量表达式 int ar[5]; 描述:ar是一个数组,开辟了5个元素(空间),每个元素都是整形类型 int ar[5] = {12,23,34,45,56}; int ar[5] = {};//初始化为0 int br[5] = {12,23,34,45,56}; int cr[5] = {12,23,34}; int main() { int a = 10; si原创 2021-07-23 23:31:46 · 107 阅读 · 0 评论 -
2021-7-16
<1>//从0加到n-1 for(int i = 0;i<n;++i) { } <2>//从1向上加到n for(int i = 0;i<=n;++i) { } int main() { int i = 0; int n = 5; for(i = 0;i<n;++i) { printf("%",i); } printf("for end:\n");//5 printf("原创 2021-07-20 17:26:22 · 125 阅读 · 0 评论 -
2021-07-14
5. 9. 求出它是几位数 分别输出每一位数字 按逆序输出个位数字 #include<stdio.h> #include<math.h> ////输入一个数,判断它是几位数 int Print(int n) { int count = 0; while(n>0) { n /= 10; printf("%d\n",n); count++; } return count; } //顺序分别输出每一位数字 int Print_Order(int n) { .原创 2021-07-18 22:54:37 · 181 阅读 · 0 评论 -
2021-07-15
函数,学会调用函数 不要把所有函数全部写在主函数中,主函数调用即可 模块化程序设计思想:分解成小的模块 把大问题分解成小问题,函数的功能单一 标准库: <assert.h>条件宏编译,将参数与0比较 <ctype.h> <math,h> <stdlib.h> //基础工具:内存管理,程序工具,字符串转换,随机数,算法 记住上面四个头文件里面的函数名,功能 用户自定义函数 组成:函数返回类型+函数名+形参列表+函数体; i原创 2021-07-18 22:49:14 · 68 阅读 · 0 评论 -
2021-6-27
在C语言中,++i和i++效果一样 #include<stdio.h> int main() { const int n = 0; for(int i = 0;i < n;i++) { } for(int i = 0;i<n;i++) { } } golang只有 i++ 一种形式 在面向对象语言C++/Java中,i++效率大于++i int main() { int a = 3,原创 2021-07-16 19:35:43 · 106 阅读 · 0 评论 -
2021-6-24
```c #include<stdio.h> #include<math.h> float TriangleArea(float a, float b, float c) { float d = -1.0f; if (a + b > c && a + c > b && b + c > a) { float p = (a + b + c) / 2; float s = sqrt(p * .原创 2021-07-16 19:34:25 · 76 阅读 · 0 评论 -
2021-6-20
常量: 1.字面常量 2.用#define定义的宏常量 3.用const关键字修饰的变量,称为常变量 4.枚举变量 5.字符常量和字符串常量 字面常量有类型 int sum = 10;//10就是字面常量 int是四个字节,给sum变量4个存储空间 10 = 100;//这是错误的表达式,表达式必须是可修改的左值 全局函数—函数外 局部函数—函数内 块内函数 #include<stdio.h> int g_max = 10;//全局变量 int main() { int a = 10;/原创 2021-07-16 19:30:16 · 135 阅读 · 0 评论 -
2021-6-17
必须掌握的技能 操作系统 计算机网络 数据结构与算法 16位到32位的微机原理 Mysql 学会使用参考手册,注册博客,记录自己日常所感所悟(写自己的理解,总结) 刷题网站: 牛客网 LeetCode 看书到P56 1.1软件 数据和指令。程序加软件的集合 1.2文件 外存 分类: 可执行文件—.exe,.bat,*.com 不可执行文件 VS 2019 先建立项目,后建立源文件 源文件是在机器码上执行的。 .c/.cpp(源文件)(文本) *.h头文件(文本) *.i预编译文件(文本) .o/.obj(二原创 2021-07-16 19:28:49 · 93 阅读 · 0 评论 -
2021-07-10
static 静态关键字,延长生存期,但不改变可见性(作用域)可见性(作用域):标识符能够被使用的范围,只有在作用域内标识符才可以被使用生存期(生命期):程序的执行阶段编译器是如何看见static就让它只执行一次?extern关键字逻辑表达式简洁与简洁或欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必原创 2021-07-16 19:26:47 · 98 阅读 · 0 评论