自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 const和指针的碰撞

const的用法1.const修饰变量1.1 C语言中1.2 C++中2.const和指针之间擦除的火花2.1.const 和一级指针结合2.1 const和二级指针的结合1.const修饰变量const修饰的量不能作为左值,完成初始化后,不能修改1.1 C语言中在C 语言中,const修饰变量称做常变量,可以不初始化,被当做一个变量来编译生成指令int main(){ const int a=10; int *p=(int*)&a; *p=30; pri

2021-01-25 20:00:36 158

原创 哦豁,看一下sizeof和strlen

sizeof和strlen的区别1.sizeof是操作符,strlen是库函数2.sizeof的返回值是size_t,是无符号的,保证能容纳建立的最大对象的所占内存字节大小typedef unsigned int size_tsize_t是无符号的,并且与平台无关,表示0-MAXINT的范围size_t是标准规定的一个同义词,它的定义放在stddef.h里面,不同的环境下,可以是typedef unsigned size_t;也可以是typedef unsigned long size_

2020-11-25 09:12:07 377 2

原创 指针,数组中常见的问题

目录数组和指针的区别一维整型数组sizeof的基本用法二维整形数组字符数组数组和指针的区别(1) 指针保存的是数据的地址。数组是用来保存数据的。(2) 指针访问数据 是通过数据的地址进行解引用,间接访问的。数组访问数据是直接的。(3) 指针通常用于动态数据结构数组用于存放固定数目而且类型相同的数据。(4) 指针通常指向匿名数据;数组通常存放已知的。一维整型数组int main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeo

2020-11-24 19:07:08 310 1

原创 两种方法解决二叉树的层序遍历

目录题目使用BFS解决问题使用DFS解决问题题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值(即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal使用BFS解决问题分析:广度优先搜索是按照层层推进的方式,

2020-11-24 17:45:55 148

原创 两个字符串形式的非负整数的和,积

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式各从最高位(理解为个位)开始相加,当不发生进位时,直接将加入的结果直接转换为字符存入str中,若发生进位,则将flag置1,并且当前位相加的结果要进行-10操作,并且向前一位先加一个进位的字符1class S

2020-11-16 19:38:36 1918

原创 自定义类型、结构体,枚举类型,联合类型

结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段枚举枚举类型的定义枚举的优点枚举的使用联合联合类型的定义联合的特点联合大小计算结构体的声明struct tag{ member_list;//成员列表,可以有多种类型}variable_list;//结构体变量列表struct Point{ int x; int y;}p1;//声明结构体的同时定义了结构体变量匿名结构体struct{

2020-09-07 19:40:07 175

原创 求1~n整数中1出现的次数

题目:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。一道数学题在自己懵逼以后看见的大神的解法。自己整理了解题思路就我来说,我首先想到的就是把1到n的每个数字的包含1的个数加起来,显然我办不到。看看大佬的思路以2219为例class Solution {public: int countDigitOne(int n) { //数字n拆分来看,分为高位,低位

2020-08-07 20:13:43 351

原创 选择排序,堆排序

选择排序:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。void select_sort(int arr[], int len){ int min = 0; int i = 0; int j = 0; int tmp = 0; for (i = 0; i

2020-08-07 11:32:53 97

原创 快速排序

快速排序:冒泡排序的升级,也是通过就比较和交换来实现。通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据都要比另一部分的所有数据小,然后在按照此方法对着两个部分的数据分别进行快速排序。算法过程:(1)假设要求序列递增,首先设定一个基准值,通过该基准值将数组分成左右两部分。(2)将大于或等于基准值的数据集中到数组右边,小于基准值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于基准值,而右边部分中各元素都大于或等于基准值。(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,

2020-08-05 19:30:07 190

原创 C++中static关键字的用法

之前文章中写了关键字static在C语言中的用法:https://blog.csdn.net/qq_44978057/article/details/103026250当然,C++是兼容C语言的,所以在C语言中的用法,在C++中同样可以使用。在此新增static在C++中的用法1.static 修饰类的成员变量,称为静态成员变量1>.静态成员函数只能在类内进行声明,在类外初始化,定...

2019-11-17 18:39:34 137

原创 c语言中的关键字static,extern

static:(修饰变量和函数)1.static修饰局部变量(静态局部变量)改变了局部变量的生命周期。结果:解析:局部变量 编辑器默认初始化为任意值,存储于栈空间中的,当出了作用域(函数体花括号)后,变量就会立即被释放,其生命周期结束。若其被static修饰,编辑器默认会初始化为0,并且静态局部变量存储于进程的全局数据区,即使函数返回,他的值也会保持不变,改变了局部变量的生命周期。2...

2019-11-12 12:08:19 142

原创 c/c++动态开辟空间的方式及比较

C语言动态内存开辟的管理 方式:malloc/calloc/realloc//malloc/calloc/realloc的区别:void Test () { //malloc只是开空间 int* p1 = (int*) malloc(sizeof(int)); free(p1); //calloc开辟空间,后空间会被初始化为0. int*...

2019-11-07 20:03:14 3597

原创 类的六个默认函数(构造,析构,拷贝等)

1.构造函数1. 名字与类名相同,在实例化中,编译器自动调用,整个生命周期只调用一次。用来初始化对象。2. 没有显示定义构造函数,编译器会默认生成。3. 默认构造:无参构造,和编译器默认生成的还有全缺省的都是默认构造,默认构造函数只能有一个。一般会定义一个全缺省的。4. 构造函数可以重载。(eg:无参和带参)5. 所有的构造函数都会自动调用自定义类型的默认构造函数2.拷贝构造函数...

2019-10-31 12:30:02 644

原创 c++(类的引入)

类与对象:用类创建对象C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数//struct定义类:默认访问权限:公有struct Student{ void SetStudentInfo(const char* name, const char* gender, int age) { strcpy(_n...

2019-10-29 21:32:06 2022 1

原创 函数重载、引用、宏的优缺点

1.函数重载//函数重载(1.函数名相同,在同一个作用域下,函数值返回类型不同不构成重载)//函数参数类型不同using namespace std;int add(int a, int b){ return a + b;}float add(float a, float b){ return a + b;}//函数参数个数不同int add(int a, int b, ...

2019-10-23 11:38:31 755

原创 c++入门1(命名空间,输入输出,缺省参数)

1.命名空间的定义和使用为什么引入命名空间:在变量,函数,类的名称都存在于全局变量中,可能会导致一些冲突,引入命名空间的目的是对标识符的名称进行本地化,避免命名冲突(namespace关键字的出现就是针对这种问题)//命名空间(每个命名空间都有自己的定义域,空间中所有的成员都局限于该命名空间中)//1.普通命名空间namespace N1//N1是命名空间的名称{ //命名空间中既可以...

2019-10-21 20:52:10 119

原创 堆的实现

概念:如果有一个集合K = {k0,k1, k2,…,kn-1}(集合中的元素按照递减或者递增排列),把它的所有元素依次按完全二叉树的顺序存储方式存储,此时每颗二叉树的孩子节点的值全部大于其父节点或者全部小于其父节点,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆;逻辑结构:完全二叉树物理结构:顺序表子节点:2父节点+1, 2父节点+2(存储位置...

2019-09-28 14:26:36 87

原创 shell排序

shell排序(希尔排序),是对插入排序的一个改装。思想:void ShellSort(int *a, int len){ int temp = 0; int i = 0; int j = 0; int r = 0; //分解数组为多个序列(分组的依据) for (i = (len / 2); i >0; i = i / 2) { for (j = i; j < ...

2019-09-17 10:35:10 742 1

原创 插入排序法

插入排序法是按照比较和插入来实现的。流程如下:1.首先对数组前两个元素进行从小到大排序(从大到小)排序。2。将第三个数与前两个排好的数进行比较,插入合适的位置。3.将第四个数插入已经排好序的前三个数中。4.不断重复。排好为止。插入排序算法在对n个数字排序的时候,无论原数据是否有序,都要进行n-1次的中间排序。平均速度o(n^2),最坏情况o(n^2)void Insertionso...

2019-09-14 21:55:27 333

原创 C语言中的操作符

选择排序法以选择和交换来实现排序。首先在未排序序列中找到最小(大)数据,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)数据,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完成。选择排序法,对n 个数据进行排序时,无论数据是否有序,都要进行n-1补中间过程。平均速度为o(n^2),最坏情况o(n^2)效率不是很高。void SelectionSort(int *a...

2019-09-12 20:37:29 127

原创 冒泡排序

冒泡排序是所有排序算法中最简单,最基本的一种。思路就是交换排序,通过相邻数据的交换来达到排序的目的。对n个数进行排序,无论其是否有序,都要进行n-1步的中间排序。平均速度为o(n^2),最坏速度o(n^2)代码实现:#include<stdio.h>#include<string.h>#include<stdlib.h>void BubbleSort...

2019-09-11 21:22:45 232

原创 等式成立,计算是在几进制下的运算方法

**1.式子7*15=133成立,用得是(8)进制(一般来说出选择题,根据排除法)假设使用的是n进制方法1:(7n^0)+(n^1+5n^0)=n^2+3n^1=3n^0.化简计算的到n2.式子456*567=150216成立,则使用的(18)进制。方法2:(6*7)%n=6(乘数和被乘数的个位乘积得到积的个位)(若是不懂,可以套用于十进制)6*6+5*7=71 (6*7)/n=m(通过...

2019-09-02 17:23:29 1323

原创 找字符串中第一个只出现一次的字符。

方法一(不要求时间复杂度,只要求做出来)两次循环嵌套,遍历字符串。int find_one(char str[], int len){ int i = 0; int j = 0; int count = 0; for (i = 0; i < len; i++) { for (j = 0; j < len; j++) { if (str[i] == str[...

2019-09-02 09:22:45 338

原创 数组和指针

“你有一个箱子,里面有你想要的东西,你用钥匙打开箱子拿到东西,这个钥匙就是一个一级指针。如果,这个钥匙不能直接打开你的箱子,但可以打开存放开你这个箱子钥匙的箱子,这个钥匙就是一个二级指针”。一级指针是一个存放地址的变量。二级指针是一个存放一级指针的地址的变量。 int a = 10; int *p = &a; int **p1 = &p1; printf...

2019-06-21 15:45:15 156 1

原创 利用位运算符进行的几种经典操作

1.判断一个数奇数还是偶数int main(){ int a = 18; if ((a & 1) == 1) { printf("该数是奇数\n"); } else { printf("该数是偶数\n"); } system("pause"); return 0;}2.不创建临时变量,实现两个数的交换,用位运算操作符。int main(){ in...

2019-06-18 11:19:13 263

原创 c语言中的格式字符

**c语言的格式字符**​格式说明由“%”和字符组成,作用是将输出的数据转化为指定的格式输出eg:格式字符有 d,o,x,u,c,s,f,e,g%d,%i :以有符号十进制整形输出(%i不常用)%-2d数据输出左对齐。%ld:以长整型输出%o:以无符号八进制整型输出%e:以指数形式输出实数%x:以无符号十六进制整型输出,或者输出字符串的地址(当%X格式输出,就是以大写字母输出)...

2019-06-17 20:56:48 7234 1

空空如也

空空如也

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

TA关注的人

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