<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a7671773的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a7671773</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a7671773]]></copyright><item><title><![CDATA[[C语言] 程序的编译过程]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/123111946</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/123111946</guid><author>a7671773</author><pubDate>Thu, 24 Feb 2022 14:57:46 +0800</pubDate><description><![CDATA[[C语言] 程序的编译过程

一、编译环境
编译环境分为两部分：1.编译，2.链接
其中编译又分为三个部分：预编译—&gt;编译—&gt;汇编

1. 编译
有三个步骤 ： 预编译—&gt;编译—&gt;汇编
1.1 预编译
展开包含的头文件
删除注释
替换我们定义的#define符号
1.2 编译
将C代码转化为汇编代码


语法分析


词法分析


语义分析


符号汇总：将全局函数和库函数收集汇总起来


1.3 汇编
将汇编代码转化为二进制指令（机器语言）
形成符号表：对应全局函数和库函数的地址将]]></description><category></category></item><item><title><![CDATA[[C语言]文件操作函数]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/123087183</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/123087183</guid><author>a7671773</author><pubDate>Wed, 23 Feb 2022 12:19:52 +0800</pubDate><description><![CDATA[[C语言]文件操作函数
​		本文主要学习**fopen，fclose，fgetc，fgets，fputc，fputs，fwrite，fread，feof**这几个文件操作函数。
​		以上函数，需要导入头文件 stdio.h
​		为什么要学习这些函数？肯定是因为我们需要存储我们的数据，使数据放入到硬盘中方便保存。
​		本文中梳理一些最常见的文件操作函数。
前言：文本文件和二进制文件
​		根据数据的组织形式，数据文件被称为文本文件或者二进制文件。
​		数据在内存中以二进制的形式存储，如果不加转换的输]]></description><category></category></item><item><title><![CDATA[[C语言]动态内存管理]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/123011458</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/123011458</guid><author>a7671773</author><pubDate>Fri, 18 Feb 2022 21:32:50 +0800</pubDate><description><![CDATA[[C语言]动态内存管理
关于动态内存管理，主要学习4个函数，分别是 malloc，calloc，realloc，free。这四个函数都需要引入头文件 stdlib.h。



空间开辟大小是固定的。


数组在申明的时候，必须指定数组的长度，它所需要的内存在编译时分配。



记住：谁开辟的空间就谁去释放。
动态内存函数介绍
malloc
void* malloc (size_t size);

如果开辟成功，则返回一个指向开辟好空间的指针。
如果开辟失败，则返回一个NULL指针，因此malloc的返回值一]]></description><category></category></item><item><title><![CDATA[[C语言] 通讯录 （动态内存版）]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/123011433</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/123011433</guid><author>a7671773</author><pubDate>Fri, 18 Feb 2022 21:28:21 +0800</pubDate><description><![CDATA[[C语言] 通讯录 （动态内存版）
如果不会动态内存管理的同志，可以先移步到
本文只会有简短的注释，并不会详细说明
test.c（主文件）
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact_dy.h"

void menu() 
{
	printf("**********************************\n");
	printf("****   1.add       2.del   *******\n");
	printf("**** ]]></description><category></category></item><item><title><![CDATA[[C语言]位段和联合类型]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/123008097</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/123008097</guid><author>a7671773</author><pubDate>Fri, 18 Feb 2022 17:30:01 +0800</pubDate><description><![CDATA[[C语言]位段和联合类型
位段和联合类型都是为了压缩空间成本而存在的。
**本文使用的编译器为  VS2019！**本文的内容和编译器息息相关，望周知。
一、位段
看一下百度的定义：C语言允许在一个 结构体 中以位为单位来指定其成员所占 内存 长度。长度的单位是bit位，
我们直接来看实例，下面的结构体 ABC 就是一个含有位段的结构体类型。
struct ABC
{
	int a:5;
    int b:20;
    int c:10;
    int d:3;
};

那这个位段ABC的大小是多少呢]]></description><category></category></item><item><title><![CDATA[[C语言]memcpy 和 memmove的使用 与 模拟实现]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/122627443</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/122627443</guid><author>a7671773</author><pubDate>Fri, 21 Jan 2022 18:48:19 +0800</pubDate><description><![CDATA[[C语言]memcpy 和 memmove的使用 与 模拟实现
建议大家学会一行字按一次 ctrl+s，也不要胡乱升级win11，写了一个小时，突然出错，白写了，只得重写
mencpy和mommove是内存中的函数，主要用来拷贝数据，不同于 strcpy的是它们可以处理所有类型的数据
memcpy
void* memcpy(void* destination,const void* source, size_f num)

第一个参数表示，我们的目标地址，
第二个参数表示，我们的源头地址，也就是 被拷贝地址]]></description><category></category></item><item><title><![CDATA[[C语言]数组和指针的sizeof 与 strlen的输出]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/122577324</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/122577324</guid><author>a7671773</author><pubDate>Wed, 19 Jan 2022 11:35:16 +0800</pubDate><description><![CDATA[本次学习sizeof与 strlen的输出
前提知识：


有指针基础（学习过 指针数组、数组指针，函数指针）
有数组基础（对 一维数组 与 二维数组 的 传参有了解）



这次学习有个非常非常非常重要的知识点，贯彻了整篇文章，请大家务必要牢记

大家都知道，数组名 是首元素的地址
但是有两个例外：


sizeof(数组名)，这里的数组名是表示整个数组的，计算的是整个数组的大小，单位是字节。


&amp;数组名，这里的数组名也表示整个数组，取出的是数组的地址



一定要牢记这两个例外


开始我们的]]></description><category></category></item><item><title><![CDATA[[C语言]使用 qsort快速排序函数，和复现qsort（冒泡方法）]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/122570868</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/122570868</guid><author>a7671773</author><pubDate>Tue, 18 Jan 2022 23:08:11 +0800</pubDate><description><![CDATA[在对数组进行排序的时候，很多的初学者都是使用冒泡排序，但是冒泡排序的效率却不高，而且还需要自己动手，没错我就是懒，并只能排序数字类型的数据
而qsort基本上所有的数组都能够排序，可见其强大；
冒泡排序如下：
#include &lt;stdio.h&gt;
//冒泡排序函数
int* bubble_sort(int* arr, int sz)
{
	for (int i = 0; i &lt; sz - 1; i++)
	{
		for (int j = 0; j &lt; sz - i - 1; j++]]></description><category></category></item><item><title><![CDATA[整型和浮点型在内存中的存储]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/122311682</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/122311682</guid><author>a7671773</author><pubDate>Tue, 04 Jan 2022 21:03:36 +0800</pubDate><description><![CDATA[整型和浮点型在内存中的存储
整型的存储

整型家族的表示范围: limits.h

计算机中的整数有三种表示方法，即原码、反码和补码。
而在计算机内存中存储的是 补码
三种表示方法均有符号位和数值位两部分，符号位都是用0表示“正”，用1表示“负”，而数值位负整数的三种表示方法各不相同。
符号位就是二进制码的第一位。

原码
直接将二进制按照正负数的形式翻译成二进制就可以。
反码
将原码的符号位不变，其他位依次按位取反就可以得到了。
补码
反码+1就得到补码。

表现方式
正整数的原码、反码和补码相同。
负整]]></description><category></category></item><item><title><![CDATA[扫雷解析（含递归）]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/121903195</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/121903195</guid><author>a7671773</author><pubDate>Mon, 13 Dec 2021 13:16:51 +0800</pubDate><description><![CDATA[扫雷解析（含递归）]]></description><category></category></item><item><title><![CDATA[【C语言】超详细的----三子棋游戏---- 实现与解析]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/121529677</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/121529677</guid><author>a7671773</author><pubDate>Thu, 25 Nov 2021 08:56:50 +0800</pubDate><description><![CDATA[【C语言】超详细的----三子棋游戏---- 实现与解析
本次学习写一个三子棋软件，基本上用到了之前所学的所有知识，下面开始解析这个 三子棋游戏。
三子棋从下往上 的组成有：棋盘，我方棋，对方棋。三个部分组成。
棋盘的要素简述
首先棋盘是一个3*3的正方形（所以使用二维数组），每一个格子应该初始化成为 空格 ' ' ,以便放入棋子。

第二，方格间应该要有分隔线构成，但是要注意边界没有棋盘的周围没有分割线。
第三，定义棋子实现，我们用  * 来表示我方棋子，用 # 表示电脑棋子。
第四，定义胜利条件，胜利条]]></description><category></category></item><item><title><![CDATA[初识C语言]]></title><link>https://blog.youkuaiyun.com/a7671773/article/details/121385141</link><guid>https://blog.youkuaiyun.com/a7671773/article/details/121385141</guid><author>a7671773</author><pubDate>Wed, 17 Nov 2021 18:55:05 +0800</pubDate><description><![CDATA[c初识C语言
1.1hello world
c语言是从主函数的第一行开始执行的
所有C语言代码都得有main函数–入口
#include &lt;stdio.h&gt;// #include的意思是“包含”，包含stdio.h的文件
                  //stdio -standard input output标准输入输出 （std- standard）（i- input）（o- output）。

//int就是整型的意思；main前面的int表示main函数调用以后返回一个整型值。
i]]></description><category></category></item></channel></rss>