
c语言
文章平均质量分 78
归期184
这个作者很懒,什么都没留下…
展开
-
动态内存管理
动态开辟的内存。malloc函数只负责在堆区申请空间,并且返回起始地址,不初始化内存空间calloc函数在堆区上申请空间,并且初始化为0,返回起始地址常见内存开辟的错误对空指针进行解引用对动态开辟空间的越界访问对非动态开辟内存使用释放使用释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)笔试题1...原创 2022-07-07 16:54:07 · 320 阅读 · 1 评论 -
自定义类型
c语言内置类型原创 2022-07-06 16:41:47 · 203 阅读 · 0 评论 -
字符函数和字符串函数
求字符串长度strcpy字符串拷贝模拟实现strcat字符串追加模拟实现strcmp字符串比较 是比较字符串的,比较的是字符串的内容,不是长度。字符串小于字符串时,返回 0 的数模拟实现区分,,是长度不受限制的字符串函数,,是长度受限制的字符串函数模拟实现strncat模拟实现strncmp字符串查找函数在一个字符串里查找另一个字符串是否存在,返回一个指针,如果在str1里找到str2,返回str2在str1里第一次出现...原创 2022-07-01 15:41:52 · 486 阅读 · 0 评论 -
指针的进阶
例题常量字符串存放在常量区,不能被修改,两个指针指向同样的常量字符串,这个常量字符串只会存一份指针数组的应用parr是数组名,数组名是数组首元素的地址,也就是int* 类型变量的地址数组指针:指向数组的指针。数组指针的类型就是去掉名字,剩下的就是类型接下来看个常见的用遍历数组错误如果想要遍历数组,下面这种写法可以数组指针在二维数组用的较多在二维数组里,arr是数组名,数组名是首元素的地址,也就是二维数组的第一行的地址,第一行是个数组,数组的地址应该放在一个里相当于找到第i行起始原创 2022-06-28 14:35:04 · 458 阅读 · 0 评论 -
数据的存储
基本的内置类型 //字符数据类型 //短整型 //整形 //长整型 //更长的整形 //单精度浮点数 - 4个字节 //双精度浮点数 - 8个字节所以和如何理解?拿举例自定义类型数组类型数组是有类型的,是我们自定义的类型构造类型指针类型空类型void 表示空类型(无类型)通常应用于函数的返回类型、函数的参数、指针类型正整数:原码,反码,补码相同;对于整形来说:数据存放在内存中其实存放的是,使用补码,可以将符号位和数值统一处理。小端字节序(以字节为单位讨论顺序)存储:把一个原创 2022-06-10 11:34:57 · 241 阅读 · 0 评论 -
模拟实现strcpy等
strcpy的模拟实现//dest指向目标空间//src指向源字符串void my_strcpy(char* dest, const char* src){ int i = 0; while (src[i] != '\0') { dest[i] = src[i]; i++; } dest[i] = '\0';}void my_strcpy1(char* dest, const char* src){ while (*src != '\0') { //虽然++的优先原创 2022-06-06 11:02:13 · 126 阅读 · 0 评论 -
一轮复习:c语言结构体
结构体的知识结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量想描述一个复杂对象,比如人/书,他的属性不止一个,所以就有了不同的成员变量结构体的声明这里只是声明,并没有创建变量结构体变量的定义typedef 重命名Stu在这里不是变量,而是结构体类型结构体的初始化一般情况: struct student s1 = {"张三",20,"12345"}; Stu s2 = {"小王",11,"212121"};当结构体里嵌套了其他结构体:struc原创 2022-05-25 10:36:50 · 143 阅读 · 0 评论 -
一轮复习:指针初阶
指针地址指向了一个确定的内存空间所以地址形象的被称为指针 int a = 10; int* pa = &a; //pa是用来存放地址的(指针),pa是指针变量 //*表示pa是指针变量,int表示pa指向的a的类型指针是个变量,存放内存单元(字节)的地址指针的大小在32位平台是4个字节,在64位平台是8个字节指针和指针类型第一个意义指针类型决定了指针解引用操作的时候,一次访问几个字节(访问内存的大小)char* 指针解引用访问一个字节int* 指针解引用访问4个字原创 2022-05-24 11:06:14 · 123 阅读 · 0 评论 -
c++继承
目录继承继承方式父类和子类对象赋值转换继承继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承不仅继承父类的成员变量,还继承父类的成员函数继承是类设计层次的复用简单来说,继承就是让子类使用父类的成员class Person//父类{public: void print() { cout << "name:" << _name << endl; cout原创 2022-04-19 11:37:13 · 5183 阅读 · 1 评论 -
模板的进阶
目录原创 2022-04-13 10:10:21 · 392 阅读 · 0 评论 -
优先级队列
目录优先级队列优先级队列优先级队列底层是堆void test_proirity(){ //默认大的优先级高 --默认给的仿函数是less //priority_queue<int> q; //利用仿函数,控制小的优先级高--给一个greater的仿函数 priority_queue<int, vector<int>, greater<int>> q; q.push(3); q.push(1); q.push(9); q.push(13)原创 2022-04-07 11:56:50 · 136 阅读 · 0 评论 -
Linux
目录calfind-namegrepzip/unzip指令tar指令callinux 当中的日期find-name指令,程序,命令,工具,本质是可执行程序linux下find命令在目录结构中搜索文件,并执行指定操作find-name:根据指定的名称来进行查找这个文件根据指定的文件名,直接进行特定文件在特定路径下的查找根据指定的文件名,直接进行特定文件在特定路径下的查找grep行过滤工具,进行文本查找grep -v匹配不包含9的zip/unzip指令zip功能原创 2022-02-03 21:30:47 · 495 阅读 · 0 评论 -
c语言操作符
目录操作符分类算数操作符移位操作符操作符分类算数操作符+, - , * ,/ ,%"/"很特殊,对于 / (除号) 两边都是整数,执行的是整数除法操作数中有浮点数才执行浮点数除法%:取模取模操作符只能针对整型类型移位操作符<< :左移操作符如果a= -1(正整数原反补相同)......原创 2022-02-15 22:03:03 · 515 阅读 · 0 评论 -
数组的使用
数组数组的组成数组的初始化一维数组的使用数组的组成type_t + arr_name[const_n]✈️type_t 代表数组的元素类型✈️const_n是一个常量表达式,代表数组的大小n必须是常量,不能是变量数组的初始化数组指定大小和没有指定大小的区别 int arr1[10] = { 1,2,3 };//不完全初始化,剩余默认初试化为0 int arr2[] = { 1,2,3 };//根据初始化的内容确定数组的大小字符数组的注意点: char arr3[] = "原创 2022-02-12 22:40:37 · 607 阅读 · 0 评论 -
函数的使用
目录库函数自定义函数库函数???? IO函数 input/output printf/scanf getchar/putchar …???? 字符串操作函数 strlen strcmp…???? 字符操作函数???? 内存操作函数 memcpy memset memmove???? 时间/日期函数 time???? 数学函数 sqrt????我们想把整型数组的前五个数用memset设置为1,这是没法实现的 int arr[10] = { 0 }; memset(arr,原创 2022-01-10 21:52:39 · 329 阅读 · 0 评论 -
分支和循环
分支和循环分支语句分支语句if语句//如果if后面想跟多条语句,使用代码块if (age > 18) { printf("可以"); printf("不行"); }else和它最近的if匹配int main(){ int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hehe\n"); else//else和if(b==2)匹配,而不是和if(a==1)匹配 printf("haha\n");原创 2021-12-16 19:55:22 · 137 阅读 · 0 评论 -
c语言初阶
c入门mian函数数据类型ASCII表常量,变量mian函数main函数—主函数是程序的入口有且只有一个主函数//void --告诉我们main函数不需要参数int main(void){ return 0; }数据类型char --字符数据类型–1个字节short–短整型–2个字节int — 整型–4个字节long – 长整型–4个字节long long – 更长的整型–8个字节float – 单精度浮点数–4个字节double – 双精度浮点数–8个字节计算机原创 2021-12-13 19:32:24 · 353 阅读 · 0 评论 -
手撕八大排序
排序算法1.直接插入排序2.希尔排序1.直接插入排序步骤一:单次排序,将x插入[0,end]的有序区间。 int end ; int x ; //单趟排序,理解为把x插入[0,end]的有序区间 while (end >= 0)//注意end的边界 { if (a[end] > x) { a[end + 1] = a[end]; end--;//end为0时--,end就等于-1,a[0]的就等于x } else原创 2021-11-22 11:07:32 · 1660 阅读 · 0 评论 -
二叉树oj题
二叉树oj题(1)相等二叉树(2) 对称二叉树(3)另一棵树的子树层序遍历oj题(1)相等二叉树思路:首先判断这两棵树是否为空。再考虑其中一个是否为空,接着再比较值是否相等,最后,如果值相等再递归比较子树1.判断两棵树是否相等。链接bool isSameTree(struct TreeNode* p, struct TreeNode* q){ if(p==NULL&&q==NULL) { return true; } if(p==NU原创 2021-11-15 19:37:24 · 487 阅读 · 0 评论 -
数据结构:单向链表
单向链表1. 单向链表的实现1. 单向链表的实现无头+单向+非循环链表增删查改实现首先定义接口#pragma once#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int STDataType;typedef struct SeqListNode{ STDataType data;//存放数据 struct SeqListNode* next;//next指向下一个结点原创 2021-11-08 21:30:48 · 449 阅读 · 0 评论 -
数据结构顺序表
顺序表1. 顺序表的实现1. 顺序表的实现//一般在生活中用到的是动态顺序表#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int SLDataType;//typedef的目的是方便以后修改存储什么类型的数据typedef struct SeqList{ SLDataType* a;//指向动态开辟的数组 int size;//有效数据的个数 i原创 2021-10-30 17:57:29 · 215 阅读 · 1 评论 -
初识数据结构
数据结构1.什么是数据结构?2.时间复杂度时间复杂度的计算1.什么是数据结构?数据结构是计算机存储,组织数据的方式。算法简单来说就是计算的步骤。那么我们如何衡量一个算法的优劣呢?通常从时间复杂度和空间复杂度两个方面衡量时间复杂度主要衡量一个算法运行的快慢空间复杂度主要衡量一个算法运行所需的额外的空间2.时间复杂度时间复杂度是算法中基本操作的执行次数算法的时间复杂度是一个函数时间复杂度的计算...原创 2021-10-14 10:12:54 · 184 阅读 · 0 评论 -
malloc,realloc,calloc的使用
malloc,realloc,calloc是c语言提供的动态内存开辟的函数1.malloc:函数向内存申请一块连续可用的空间,并且返回指向这块空间的指针,如果开辟失败(比如申请四十个G的空间,而电脑没有这么大的内存就失败),就返回一个NULL指针...原创 2021-09-24 09:53:43 · 2212 阅读 · 3 评论