- 博客(15)
- 收藏
- 关注
原创 vim与tmux配置文件及常用命令总结
注意,以下命令均基于所给配置文件,默认命令前缀为。:全文件替换,“old”替换为“new”。:打开一个文件进行编辑。:不保存并强制退出。
2024-04-30 18:32:58 1328
原创 指针与数组一:指针理解
本文主要介绍C语言中指针的基本概念与用法。一. What(什么是指针)1. 地址初了解要搞明白什么是指针,首先我们得先了解一个概念:地址。什么是地址呢?我们知道,计算机的内存是一块连续的大块存储空间,为了提高 CPU 查找数据的效率,我们将这块连续的存储空间以字节为单位进行编号,每个字节都一一对应了一个编号,这个编号就叫做地址。举个形象的例子:如果我们把一座宿舍楼看做是内存,那么宿舍楼里的房间我们就可以看成是内存里的每一个字节,那么每个房间的门牌号就可以看做是地址。为什么要有地址?通过上面
2021-09-07 23:36:09 411 4
原创 解析C中条件编译,头文件包含知识,以及 #/## 的运用
条件编译是C程序预处理时进行的操作,本质是进行代码的选择性裁剪工作。指令很多,我们逐一来看。一. ifdef / ifndef1. 基本认识#include <stdio.h>int main(){#ifdef CPP printf("CPP\n");#endif return 0;}顾名思义,ifdef 如果定义了宏CPP,执行 #ifdef 和 #endif 之间的语句,否则不执行。还可以进行二分支:#include <stdio.h>#define
2021-08-30 14:25:16 1928 7
原创 万能的替身演员 #define
本文介绍在C语言中一位万能的,却经常耍大牌的替身演员,那就是宏。阅读本文内容建议初步了解一下C语言代码的翻译过程,具体可见博文简单解析vim和gcc,为方便演示,本文将在Linux环境中进行演示。一.宏常量1.数值宏常量(1)基本定义注:按照规范,宏名称必须全大写。#include <stdio.h># define M 20 //宏定义int main(){ printf("%d\n", M); printf("%d\n", M*M); return 0;}
2021-08-25 16:33:31 484 3
原创 取整取余(模)知多少?
本文介绍几种常见的整除取整方式,以及 % 运算问题。一. 取整方式以C语言为例,相信大多数同学都知道以下事实:int a = 5, b = 2;a / b; // 答案为2,不是2.5当 a, b都是整形变量时,相除的结果必定也是整形,所以 a / b 不会是 2.5,那么为什么结果是2,而不是3呢?int a = 5, b = -2;a / b; // 答案为-2,不是-2.5同样的,为什么答案是 -2 ,而不是 -3 呢?要解决这个问题,我们首先要了解一下常见的几种取整
2021-08-22 13:00:14 1616 5
原创 一文带你搞定二分(真的详细,建议收藏)
二分,相信对于大多数初涉算法的同学来说,真的是玄学编程。主体思想容易至极,可是细节处理,边界处理,真的是无比难受。本文结合笔者踩过的坑,意图带大家搞清二分的本质。二分法通常有四种常见类型,我们逐一来看。说明: int mid = left + (right-left) / 2; 等价于 int mid = (left + right) / 2; 只是后者在算法比赛中 left + right 可能会超出整形范围导致结果出错,建议使用前一种形式,后文不在解释。一.寻找唯一值这种二分是整数二分中最基本的
2021-08-09 13:34:59 1132 11
原创 Python的三种序列类型: 字符串类型,元组类型及列表类型
上篇博客已经介绍了序列类型的通用定义,以及一些常用的函数及方法,本文不再赘述,具体可见 Python中的组合数据类型浅解析。本文将具体介绍Python的三种序列类型: 字符串类型,元组类型以及列表类型各自的特点以及特殊用法。一.字符串类型二.元组类型三.列表类型...
2021-08-07 16:49:00 4288
原创 解析C中 [ ] 操作符
本文我们将探讨一句诡异的代码。一. 问题printf("%d", 2["hello world"]);问: 输出结果?为什么?这句代码对于初学C的同学来说,相信极其的诡异,2[“hello world”] ??这是个啥玩意??二. [ ] 操作符解析要搞清楚这个问题,我们首先要弄清 [ ] 的含义。首先,我们想一想,我们在哪里最常使用这个 [ ] ?没错,定义或使用数组的时候。#include <stdio.h>int main(){ int arr[5] = { 1,
2021-08-07 13:54:28 12761 13
原创 理解C中函数调用及内存释放
本文我们只讨论一段代码,这也是字节跳动某年面试真题。#include <stdio.h>char* show(){ char str[] = "hello world!"; return str;}int main(){ char *s = show(); printf("%s\n", s); return 0;}问: 此段代码运行结果是什么?怎么解释?先来大概看一下这段代码,主函数调用show()函数,show()函数中定义一字符数组str,并把数组名即首元素
2021-08-06 23:14:31 4070 11
原创 Python中的组合数据类型浅解析
Python中常用的组合数据类型大致有三种: 集合类型,序列类型和字典类型,以下将逐一进行阐述。一.集合类型1.定义集合是多个元素的无序组合,与数学中的集合概念一致。集合元素之间无序且唯一,不可存在相同元素。集合元素一旦确定便不可更改,也不可为可变数据类型(如列表)。2.创建方式A = {1, 2, 3, 4, 5} # 使用{}创建集合B = set('12345') # 使用set()创建集合,其中,集合元素为单一字符。C = set() # 使用set()创建空集合注: 空集
2021-08-06 17:08:08 2210 3
原创 C语言浮点数,布尔类型以及NULL与0比较
一.浮点数与0比较1.现象及原因相信很多初学C语言的朋友一定犯过这样的错误: double x = 1.0; double y = 0.9; if (x - y == 0.1) { printf("You can see me!\n"); } else { printf("oops!\n"); }理论上,1.0 - 0.9 == 0.1是毫无疑问的,但是当我们执行这段程序的时候却发现和我们预计的恰好相反,程序输出了 oops!原因是:浮点数在计算机中存储时会有精度损失!让我们
2021-07-29 20:17:03 1525
原创 环形链表判断和寻找入环点
本文分享一道非常经典的题目,选自力扣。https://leetcode-cn.com/problems/linked-list-cycle/https://leetcode-cn.com/problems/linked-list-cycle-ii/共两道OJ,我们一道道的看。一.判断是否为环形链表原题如下我们的任务是判断题目所给链表是否带环。1.题目分析乍一看题,似乎感觉简单。如果链表不带环,链表将以NULL结束,我们似乎只需遍历链表,看是否能找到NULL。但仔细想想这种方法并不可行,因为
2021-05-15 14:36:24 499 2
原创 简单解析vim和gcc
本文介绍Linux中vim和gcc的简单配置及使用。一. vim1. 介绍vim是Linux系统中的一款编辑器,注意,仅仅是编辑器,他只能帮助你写代码,本质上和Windows中的记事本和Linux中的nano是一样的。它并不负责代码的翻译与调试工作。未经过配置的vim在使用上的确与记事本没有任何区别,这对我们非常不友好,所以我们要进行vin配置。2. 配置方法(1). 手动创建文件配置在家目录中 touch .vmrc 创建隐藏文件,打开这个文件,就可以在里面进行相关配置,具体命令参见互联网~
2021-04-03 23:39:15 2448 2
原创 Linux环境搭建
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-03-20 16:20:10 315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人