<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_35600620的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_35600620</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_35600620]]></copyright><item><title><![CDATA[详细总结C语言指针]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/109561127</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/109561127</guid><author>qq_35600620</author><pubDate>Fri, 13 Nov 2020 21:06:58 +0800</pubDate><description><![CDATA[前言

第一次详细的总结关于C指针的文章，指针对于C来说，是其灵魂所在。在工作与不断的学习过程中，越发觉得指针的重要性.......（词穷）

1、什么是指针？

“指针就是地址”，相信大家都知道这个答案。然而能在代码中灵活运用指针的人并不是绝大多数。

相信对于初学者或者是对C语言指针掌握得不是很好的“道友们”来说，同一个需求一样能实现得很好，但是你的代码可能只有你自己可以进行维护，并且出了BUG，没人能帮你，只能自己“渡劫”。毕竟自己造的孽，只能自己来承受。
  /*简述学C的过程对指针的...]]></description><category></category></item><item><title><![CDATA[Linux之IO多路复用]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105930023</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105930023</guid><author>qq_35600620</author><pubDate>Tue, 05 May 2020 13:59:20 +0800</pubDate><description><![CDATA[一、什么是IO多路复用

关于这部分内容请移步到下面的链接进行学习，本文主要介绍select，poll和epoll三种多路复用的实现。

https://www.zhihu.com/question/32163005



二、select的实现

2.1 select的原理：

user space创建一张存放文件描述符的表，（该表的大小为1024个bit，受限于能打开文件个数），并且将需要监...]]></description><category></category></item><item><title><![CDATA[LeetCode之67. 二进制求和]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105622947</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105622947</guid><author>qq_35600620</author><pubDate>Sun, 19 Apr 2020 23:38:47 +0800</pubDate><description><![CDATA[一、题目



二、题目分析

关于这个题目，相信很多人（包括我）本能反应是先将字符串转换为二进制数，然后再对其求解，最后再将求解的结果转换为字符串返回。

这里我们需要注意的题目并没有说明二进制字符串的长度，所以不管我们定义多大的变量去存储字符串转换成的结果，都有可能存在数据溢出的问题，并且，这样的方法效率会很低，因为我们需要将两个字符串转换为两个整数，在将相加后的结果转为为字符串。

在这里我...]]></description><category></category></item><item><title><![CDATA[LeetCode之637. 二叉树的层平均值]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105622456</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105622456</guid><author>qq_35600620</author><pubDate>Sun, 19 Apr 2020 21:39:15 +0800</pubDate><description><![CDATA[一、题目

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.




/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

double* a...]]></description><category></category></item><item><title><![CDATA[linux学习之进程相关内容]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105470482</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105470482</guid><author>qq_35600620</author><pubDate>Sun, 12 Apr 2020 17:05:00 +0800</pubDate><description><![CDATA[本文只是简单介绍个人在学习进程中的部分内容，仅具参考意义。

一、进程相关概念

进程的定义：“进程”是操作系统的最基本、最重要的概念之一。但迄今为止对这一概念还没有一个确切的统一的描述。下面给出几种对进程的定义描述。进程是程序的一次执行。进程是可以并行执行的计算。进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。进程是程序在一个数据集合上的运行过程。它是系统进行资源分配和调度的一个独立...]]></description><category></category></item><item><title><![CDATA[LeetCode之字符串相加（415）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105346103</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105346103</guid><author>qq_35600620</author><pubDate>Mon, 06 Apr 2020 16:51:17 +0800</pubDate><description><![CDATA[题目:字符串相加

给定两个字符串形式的非负整数num1和num2，计算它们的和：

注意：

1.num1和num2的长度都小于5100。

2.num1和num2都只包含数字0-9。

3.num1和num2都不包含任何前导零。

4.不能使用任何内奸BigInteger库，也不能直接将输入的字符串转换为整数形式。



题目分析

简单的来说就是给定非负整数num1和num2，然后我们计算...]]></description><category></category></item><item><title><![CDATA[排序算法之快速排序（C语言）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105163058</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105163058</guid><author>qq_35600620</author><pubDate>Sat, 28 Mar 2020 21:10:27 +0800</pubDate><description><![CDATA[一、原理讲解

快速排序的核心思想是：通过一趟排序将要排序的数据分割成独立的两部分，其中一部分的所有数据都比另外一部分的所有数据都要小，然后再按此方法对这两部分数据分别进行快速排序，整个排序过程可以递归进行，以此达到整个数据变成有序序列。

简单的说法，就是设置一个基准，将无序数组的数据分隔成两部分，基准左边的数据都小于基准，基准右边的数据都大于基准。然后不断设置基准与参与排序的数据个数进行排序，...]]></description><category></category></item><item><title><![CDATA[排序算法之插入排序（C语言）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105161810</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105161810</guid><author>qq_35600620</author><pubDate>Sat, 28 Mar 2020 16:03:12 +0800</pubDate><description><![CDATA[一、原理讲解

插入排序算法核心思想：将无序数组中的元素，根据其值的大小，插入有序子数组中。类似于我们打扑克牌的时候，一边摸牌，一遍摆牌。遇到小的直接插到牌首，遇到大的直接插入牌尾，遇到中间的则在中间空出一个位置，将其插入。

假定有一个无序数组arr[10] = {10, 1, 0, 44, 5, 6, 77, 8, 10, 99};

第一步，直接将无序数组的第一个元素划分到有序子数组当中去...]]></description><category></category></item><item><title><![CDATA[排序算法之选择排序（C语言）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105158431</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105158431</guid><author>qq_35600620</author><pubDate>Sat, 28 Mar 2020 12:25:21 +0800</pubDate><description><![CDATA[一、原理讲解

选择排序的算法核心为：选择无序数组中最小/最大的数据，与无序数组中第一个/最后一个数据进行交换。这里需要注意，每轮交换之后，会将数组分为两部分，一部分为有序，一部分为无序。

假定有个无序数组：arr[10] = {9, 2, 0, 31, 5, 6, 11, 8, 10, 33};

下图为每轮排序后的结果：



注意，该图是每轮交换后的结果，交换前的看上一轮，其中第0轮为原始...]]></description><category></category></item><item><title><![CDATA[排序算法之冒泡排序（C语言）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/105155953</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/105155953</guid><author>qq_35600620</author><pubDate>Sat, 28 Mar 2020 11:00:45 +0800</pubDate><description><![CDATA[一、原理讲解

所谓排序，就是将一串无序数据，按照其中某个或某些关键的大小，递增或递减排列起来的操作，排序算法，就是如何使得记录按照要求排列的方法。

下面对冒泡排序进行详解。这里我们先对冒泡二字进行初步的说明。冒泡指的就是水下的气泡，从水底向上冒的过程，这气泡在上升的过程，气泡在压力的作用下，逐渐表大。如下图所示：



冒泡算法实现过程就如这冒泡的过程，算法核心是相邻的两个数进行比较，将大的/...]]></description><category></category></item><item><title><![CDATA[Makefile编程快速上手]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104856056</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104856056</guid><author>qq_35600620</author><pubDate>Sat, 14 Mar 2020 16:08:37 +0800</pubDate><description><![CDATA[一、认识makefile

makefile是一个工程管理器，可以在makefile文件中给工程，定义一系列的规则来指定哪些文件需要先编译，哪些文件需要后编译，哪些文件需要重新编译，甚至于进行更复杂的功能操作。简而言之就是告诉系统如何去编译这个工程。

其中我们使用makefile还有一个很重要的原因，就是make工程管理器根据时间戳，来自动发现更新过的文件从而减少编译的工作量。

就这点文字说明...]]></description><category></category></item><item><title><![CDATA[Shell脚本编程快速上手]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104711678</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104711678</guid><author>qq_35600620</author><pubDate>Sat, 07 Mar 2020 18:06:11 +0800</pubDate><description><![CDATA[一、认识shell

操作系统最外层的程序，shell通过提示符让用户输入，向操作系统解释该输入，然后处理来自操作系统的任何结果输出来，管理用户与操作系统之间的交互。







二、shell脚本编程

这里我们直接上手编程，再根据遇到的问题逐个讲解。

shell脚本编写流程：

1）创建shell脚本文件

2）编写shell脚本

3）给脚本文件添加执行权限

4）执行shell脚本...]]></description><category></category></item><item><title><![CDATA[C语言之随记]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104610651</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104610651</guid><author>qq_35600620</author><pubDate>Mon, 02 Mar 2020 21:05:12 +0800</pubDate><description><![CDATA[该文无主要介绍主旨，简单介绍一些博主在复习C语言中发现的一些易错点。



一、memset函数的应用

memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值， 这个函数通常为新申请的内存做初始化工作。


#include &lt;string.h&gt;                         //需要添加的C库头文件

void *memse...]]></description><category></category></item><item><title><![CDATA[Leetcode之合并两个有序链表]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104444165</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104444165</guid><author>qq_35600620</author><pubDate>Sat, 22 Feb 2020 16:27:20 +0800</pubDate><description><![CDATA[之前虽然对链表有进行学习，但是没有怎么使用过，导致对链表有很大程度的遗忘以及应用过程中遇到了很多问题。



题目：合并两个有序链表

将两个有序链表为一个新的有序链表并返回，新链表是通过拼接给定的两个链表的所有节点组成的。

示例：


输入：1 -&gt; 2 -&gt; 4 ,  1 -&gt; 3 -&gt; 4
输出：1 -&gt; 1 -&gt; 2 -&gt; 3 -&gt; 4 ...]]></description><category></category></item><item><title><![CDATA[TCP的套接字的socket通信]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104346840</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104346840</guid><author>qq_35600620</author><pubDate>Sun, 16 Feb 2020 20:49:14 +0800</pubDate><description><![CDATA[TCP的套接字的socket通信

本篇主要通过实现TCP的套接字通信例程介绍套接字基础知识。

一、概念

套接字：TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点，这种端点，就叫做套接字（socket）或插口。套接字用（IP地址：端口号）表示。

 生成套接字的三个主要参数：通信的目的IP地址，使用传输层协议（TCP或UDP）和使用的端口。socket原意为插座，通过这...]]></description><category></category></item><item><title><![CDATA[C语言用实现Shell指令ls -l]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104167796</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104167796</guid><author>qq_35600620</author><pubDate>Thu, 06 Feb 2020 18:06:14 +0800</pubDate><description><![CDATA[要求：利用C语言实现Shell指令ls -l

这里我们只在ubuntu的终端里面输入ls -l指令，看看得到结果。



在这里我们可以看到终端将当前文件夹内的文件按以下格式显示：

文件类型
			文件权限
			目录（链接个数）
			所属用户
			所属用户组
			文件大小
			修改时间
			文件名称
		d
			rwxrwxr-x
			3
			linux
			linux
...]]></description><category></category></item><item><title><![CDATA[C语言利用fgetc和fputc函数实现文件的复制]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104144626</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104144626</guid><author>qq_35600620</author><pubDate>Sun, 02 Feb 2020 16:25:08 +0800</pubDate><description><![CDATA[要求：利用fgetc和fputc函数实现文件的复制

分析：使用指定函数实现指定功能。所以这里问题就简单化，我们弄明白fgetc和fputc两个函数如何使用即可。

函数原型
			函数介绍
		int fgetc(FILE *stream)
			从指定的流 stream 获取下一个字符（一个无符号字符），并把位置标识符往前移动。
		函数成功读取时返回读取的字符，若到文件末尾或者出错时返回E...]]></description><category></category></item><item><title><![CDATA[Linux学习之Shell命令基础]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104125158</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104125158</guid><author>qq_35600620</author><pubDate>Sat, 01 Feb 2020 21:44:43 +0800</pubDate><description><![CDATA[一、Shell命令格式

通常一条命令包含三个要素：命令名称、选项、参数。其中命令名称是必须的，选项和参数可以根据实际情况进行填写。具体命令格式如下所示：

Command [-Options] Argument1 Argument2 ········

   命令     选项    参数1     参数2

Command
			shell命令名...]]></description><category></category></item><item><title><![CDATA[C语言之二叉树（二）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104076466</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104076466</guid><author>qq_35600620</author><pubDate>Sat, 25 Jan 2020 20:34:37 +0800</pubDate><description><![CDATA[二叉树常见操作

一、遍历二叉树

二叉树的存储采用的是链式存储方式（链表）但是其链数是不确定的，所以我们不可直接采用链表的遍历方法。在这里介绍一下二叉树的常见遍历方法。

遍历二叉树的顺序存在以下三种顺序、六种情况。

1.先序遍历，TLR（根左右），TRL（根右左）。

2.中序遍历，LTR（...]]></description><category></category></item><item><title><![CDATA[C语言之二叉树（一）]]></title><link>https://blog.youkuaiyun.com/qq_35600620/article/details/104017330</link><guid>https://blog.youkuaiyun.com/qq_35600620/article/details/104017330</guid><author>qq_35600620</author><pubDate>Sun, 19 Jan 2020 16:57:48 +0800</pubDate><description><![CDATA[一、树的定义

树是由n（n &gt;= 0）个节点组成的有限集合。如果n = 0，则称之为空树。

如下图所示



1.A为根节点，它只有直接后驱，但是没有直接前驱。

2.除根以外的其他节点划分为m（m &gt;= 0）个互不相交的有限集合T0，T1..........，TN，每个集合又是一棵树，并称之为根的子树。每棵子树的节点仅有一个直接前驱，但可以有0个或者多个直接后继。途中B和C就是A...]]></description><category></category></item></channel></rss>