- 博客(27)
- 收藏
- 关注
原创 详细总结C语言指针
前言第一次详细的总结关于C指针的文章,指针对于C来说,是其灵魂所在。在工作与不断的学习过程中,越发觉得指针的重要性.......(词穷)1、什么是指针?“指针就是地址”,相信大家都知道这个答案。然而能在代码中灵活运用指针的人并不是绝大多数。相信对于初学者或者是对C语言指针掌握得不是很好的“道友们”来说,同一个需求一样能实现得很好,但是你的代码可能只有你自己可以进行维护,并且出了BUG,没人能帮你,只能自己“渡劫”。毕竟自己造的孽,只能自己来承受。 /*简述学C的过程对指针的...
2020-11-13 21:06:58
420
原创 Linux之IO多路复用
一、什么是IO多路复用关于这部分内容请移步到下面的链接进行学习,本文主要介绍select,poll和epoll三种多路复用的实现。https://www.zhihu.com/question/32163005二、select的实现2.1 select的原理:user space创建一张存放文件描述符的表,(该表的大小为1024个bit,受限于能打开文件个数),并且将需要监...
2020-05-05 13:59:20
447
原创 LeetCode之67. 二进制求和
一、题目二、题目分析关于这个题目,相信很多人(包括我)本能反应是先将字符串转换为二进制数,然后再对其求解,最后再将求解的结果转换为字符串返回。这里我们需要注意的题目并没有说明二进制字符串的长度,所以不管我们定义多大的变量去存储字符串转换成的结果,都有可能存在数据溢出的问题,并且,这样的方法效率会很低,因为我们需要将两个字符串转换为两个整数,在将相加后的结果转为为字符串。在这里我...
2020-04-19 23:38:47
236
原创 LeetCode之637. 二叉树的层平均值
一、题目给定一个非空二叉树, 返回一个由每层节点平均值组成的数组./** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */double* a...
2020-04-19 21:39:15
397
原创 linux学习之进程相关内容
本文只是简单介绍个人在学习进程中的部分内容,仅具参考意义。一、进程相关概念进程的定义:“进程”是操作系统的最基本、最重要的概念之一。但迄今为止对这一概念还没有一个确切的统一的描述。下面给出几种对进程的定义描述。进程是程序的一次执行。进程是可以并行执行的计算。进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。进程是程序在一个数据集合上的运行过程。它是系统进行资源分配和调度的一个独立...
2020-04-12 17:05:00
123
原创 LeetCode之字符串相加(415)
题目:字符串相加给定两个字符串形式的非负整数num1和num2,计算它们的和:注意:1.num1和num2的长度都小于5100。2.num1和num2都只包含数字0-9。3.num1和num2都不包含任何前导零。4.不能使用任何内奸BigInteger库,也不能直接将输入的字符串转换为整数形式。题目分析简单的来说就是给定非负整数num1和num2,然后我们计算...
2020-04-06 16:51:17
204
原创 排序算法之快速排序(C语言)
一、原理讲解快速排序的核心思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。简单的说法,就是设置一个基准,将无序数组的数据分隔成两部分,基准左边的数据都小于基准,基准右边的数据都大于基准。然后不断设置基准与参与排序的数据个数进行排序,...
2020-03-28 21:10:27
1823
原创 排序算法之插入排序(C语言)
一、原理讲解插入排序算法核心思想:将无序数组中的元素,根据其值的大小,插入有序子数组中。类似于我们打扑克牌的时候,一边摸牌,一遍摆牌。遇到小的直接插到牌首,遇到大的直接插入牌尾,遇到中间的则在中间空出一个位置,将其插入。假定有一个无序数组arr[10] = {10, 1, 0, 44, 5, 6, 77, 8, 10, 99};第一步,直接将无序数组的第一个元素划分到有序子数组当中去...
2020-03-28 16:03:12
3958
原创 排序算法之选择排序(C语言)
一、原理讲解选择排序的算法核心为:选择无序数组中最小/最大的数据,与无序数组中第一个/最后一个数据进行交换。这里需要注意,每轮交换之后,会将数组分为两部分,一部分为有序,一部分为无序。假定有个无序数组:arr[10] = {9, 2, 0, 31, 5, 6, 11, 8, 10, 33};下图为每轮排序后的结果:注意,该图是每轮交换后的结果,交换前的看上一轮,其中第0轮为原始...
2020-03-28 12:25:21
355
原创 排序算法之冒泡排序(C语言)
一、原理讲解所谓排序,就是将一串无序数据,按照其中某个或某些关键的大小,递增或递减排列起来的操作,排序算法,就是如何使得记录按照要求排列的方法。下面对冒泡排序进行详解。这里我们先对冒泡二字进行初步的说明。冒泡指的就是水下的气泡,从水底向上冒的过程,这气泡在上升的过程,气泡在压力的作用下,逐渐表大。如下图所示:冒泡算法实现过程就如这冒泡的过程,算法核心是相邻的两个数进行比较,将大的/...
2020-03-28 11:00:45
449
原创 Makefile编程快速上手
一、认识makefilemakefile是一个工程管理器,可以在makefile文件中给工程,定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。简而言之就是告诉系统如何去编译这个工程。其中我们使用makefile还有一个很重要的原因,就是make工程管理器根据时间戳,来自动发现更新过的文件从而减少编译的工作量。就这点文字说明...
2020-03-14 16:08:37
167
原创 Shell脚本编程快速上手
一、认识shell操作系统最外层的程序,shell通过提示符让用户输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来,管理用户与操作系统之间的交互。二、shell脚本编程这里我们直接上手编程,再根据遇到的问题逐个讲解。shell脚本编写流程:1)创建shell脚本文件2)编写shell脚本3)给脚本文件添加执行权限4)执行shell脚本...
2020-03-07 18:06:11
371
原创 C语言之随记
该文无主要介绍主旨,简单介绍一些博主在复习C语言中发现的一些易错点。一、memset函数的应用memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。#include <string.h> //需要添加的C库头文件void *memse...
2020-03-02 21:05:12
211
原创 Leetcode之合并两个有序链表
之前虽然对链表有进行学习,但是没有怎么使用过,导致对链表有很大程度的遗忘以及应用过程中遇到了很多问题。题目:合并两个有序链表将两个有序链表为一个新的有序链表并返回,新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1 -> 2 -> 4 , 1 -> 3 -> 4输出:1 -> 1 -> 2 -> 3 -> 4 ...
2020-02-22 16:27:20
242
原创 TCP的套接字的socket通信
TCP的套接字的socket通信本篇主要通过实现TCP的套接字通信例程介绍套接字基础知识。一、概念套接字:TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点,就叫做套接字(socket)或插口。套接字用(IP地址:端口号)表示。 生成套接字的三个主要参数:通信的目的IP地址,使用传输层协议(TCP或UDP)和使用的端口。socket原意为插座,通过这...
2020-02-16 20:49:14
1192
原创 C语言用实现Shell指令ls -l
要求:利用C语言实现Shell指令ls -l这里我们只在ubuntu的终端里面输入ls -l指令,看看得到结果。在这里我们可以看到终端将当前文件夹内的文件按以下格式显示:文件类型 文件权限 目录(链接个数) 所属用户 所属用户组 文件大小 修改时间 文件名称 d rwxrwxr-x 3 linux linux...
2020-02-06 18:06:14
3513
原创 C语言利用fgetc和fputc函数实现文件的复制
要求:利用fgetc和fputc函数实现文件的复制分析:使用指定函数实现指定功能。所以这里问题就简单化,我们弄明白fgetc和fputc两个函数如何使用即可。函数原型 函数介绍 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。 函数成功读取时返回读取的字符,若到文件末尾或者出错时返回E...
2020-02-02 16:25:08
3009
原创 Linux学习之Shell命令基础
一、Shell命令格式通常一条命令包含三个要素:命令名称、选项、参数。其中命令名称是必须的,选项和参数可以根据实际情况进行填写。具体命令格式如下所示:Command [-Options] Argument1 Argument2 ········ 命令 选项 参数1 参数2Command shell命令名...
2020-02-01 21:44:43
1187
原创 C语言之二叉树(二)
二叉树常见操作一、遍历二叉树二叉树的存储采用的是链式存储方式(链表)但是其链数是不确定的,所以我们不可直接采用链表的遍历方法。在这里介绍一下二叉树的常见遍历方法。遍历二叉树的顺序存在以下三种顺序、六种情况。1.先序遍历,TLR(根左右),TRL(根右左)。2.中序遍历,LTR(...
2020-01-25 20:34:37
209
原创 C语言之二叉树(一)
一、树的定义树是由n(n >= 0)个节点组成的有限集合。如果n = 0,则称之为空树。如下图所示1.A为根节点,它只有直接后驱,但是没有直接前驱。2.除根以外的其他节点划分为m(m >= 0)个互不相交的有限集合T0,T1..........,TN,每个集合又是一棵树,并称之为根的子树。每棵子树的节点仅有一个直接前驱,但可以有0个或者多个直接后继。途中B和C就是A...
2020-01-19 16:57:48
571
原创 C语言之双向链表
一、双向链表在上一篇文章我们已经介绍了单向链表,了解了其具体构造及其基本操作,我们也能发现其部分缺点,查找数据和删除数据的时候都必须从链表头指针开始挨个遍历,直到找到目标节点。双向链表的双向指的的就是我们遍历链表的时候可以正序遍历也可逆序遍历,链表内的节点不止与下一个节点有关系,与上一个节点同样有关系。具有两个方向。1.1双向链表的构造如下图所示根据图我们可以看到,双向链表和单向链...
2020-01-10 17:31:35
1956
8
原创 C语言之单向链表
一、链表链表是一种常见的数据结构,它可以动态的进行存储分配,根据需要开辟内存单元与释放内存单元,链表中的元素通常由两部份组成:数据域和指针域。数据域用于存储数据,指针域用于节点的连接。链表结构如下图所示:链表第一个节点是头指针,每个节点都都包含这数据域与指针域,每个节点与其下一个节点都是通过指针域进行相连的,且最后一个节点的指针域指向NULL。二、单向链表基本操作首先我们看...
2020-01-09 12:34:54
350
原创 C语言之结构体中“ . ”和“ -> ”的区别
相同点:两个操作符都是二元操作符,且其有操作符是结构体成员的名称。不同点:“ . ”操作符左边的操作数是一个“结构体”的表达式,而“ -> ”操作符左边的操作数是一个指向结构体的指针。例:typedef struct { int num; float score; char name[10];}STUDENT;STUDENT temp;STUD...
2020-01-09 10:16:21
6149
原创 C语言之内存管理与函数返回值的一些小问题
一、内存管理在C语言中,定义了四个内存区间:代码区、全局变量与静态变量区、局部变量区即栈区、动态存储区即堆区。1.代码区:代码区内存放程序代码,属性为只读的。2.全局变量与静态变量区:该区域也称之为静态存储区域。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。主要保存全局变量,静态变量和字符串常量,分配在这个区域中的变量,只有当程序结束的时候才会将内存释放。因此,...
2020-01-05 15:20:48
725
原创 C语言之函数的参数传递
本文主要介绍C语言参数的三种传递方式,以及个人遇到的一些问题及解决方法C语言中,传递参数的主要方式有三种: 1.值传递方式 2.地址传递方式 3.引用传递一、值传递值传递,指的是将实参的值复制并赋值给形参。这里需要注意的地方是,实参和形参的存储单元并不相同,实参的存储单元由实参的定义方式决定,而形参的存储单元则是栈,对应的存储单元在函数调...
2020-01-04 20:36:40
6191
原创 C语言之条件编译的使用
一、本文主要介绍C语言中关于条件编译相关的预处理命令,包含#define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif。#define 定义一个预处理宏 #undef 取消一个预处理宏 #ifdef 判断某个预处理宏是否被定义,若定义则编译后续程序段 #ifndef 判断某个预处理宏是否没有被定义,若没定义则编译后...
2020-01-02 12:16:01
612
1
原创 国产2.4G芯片的简单应用
本文主要针对国产LT8920,XN297这两款2.4G芯片的应用进行介绍2.4G的应用。 我们都知道2.4G是一种无线技术,由于其频段处于2.400GHz~2.4835GHz之间,所以简称2.4G无线技术。这句话给我们约束了2.4G芯片的工作频段,2.400GHz~2.4835GHz。 一、工作频率的选取, 我们在对2.4G应用的时候,第一点要确保的是2.4G...
2019-08-09 16:55:55
7076
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人