自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言毕业啦!!!(内附超详细知识框架图)

经过三个月的学习,我的C语言总算是毕业啦!!!这期间虽然遇到了不少问题,但最后都迎刃而解。从最开始的分支循环语句,到较难的函数和数组,再到更难的指针,还有结构体,联合体,位段,动态内存开辟,文件操作函数,程序的编译和链接等等等等。刚开始学的时候都感觉很难,特别是文件操作函数和程序的编译和链接这两个部分,真的是反复学习了好几遍才弄懂!大部分在学校学习C语言的朋友,都是感觉指针非常难,但是指针和这些更底层一点的学习比较起来,真的是不算什么了。但是只要我们肯花心思去学习,没有什么是学不会的。在学完C语言后,感

2021-03-31 15:38:34 5647 42

原创 预处理详解(三)—— 命令行定义 + 条件编译 + 文件包含

文章目录前言前言

2021-03-30 22:13:46 1071 4

原创 预处理详解(二)—— #define定义宏和标识符 + 宏和函数的对比 + #和##的作用 + #undef

文章目录#define定义标识符#define定义宏#define的替换规则带副作用的宏参数宏和函数的区别命名约定#和###define定义标识符#define定义宏#define的替换规则带副作用的宏参数宏和函数的区别命名约定#和##...

2021-03-28 21:58:00 1202 10

原创 预处理详解(一)—— 预定义符号

文章目录预定义符号预定义符号的使用预定义符号在C语言中,有一些有意思的预定义符号,这些预定义符号都是语言内置的,即以及定义好的,我们可以直接使用。预定义符号主要有以下几个:__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__FUNCTION__ //进行编译的函数__STDC__ //如果编译器遵循ANSI C,其值

2021-03-27 17:04:50 1882 11

原创 单向链表的逆转(不创建临时变量)

文章目录前言基本思路代码总览举例分析前言在单向链表的创建与遍历中,我们知道了如何创建并且遍历单向链表。那么,如果要将一个链表进行逆转(将链表的第一个元素转为最后一个元素,第二个元素转为倒数第二个元素,以此类推),又该如何实现呢?说到这里,有些博友可能会想到:创建一个临时变量temp,并创建两个指针P1,P2,P1指向链表开头,P2指向链表末尾,然后通过temp变量将P1和P2指向的结点的数据域进行交换,然后将P1向后移,P2向前移,继续交换数据域,直到全部交换。这样必然是可行的,但我们这次的要求是:不

2021-03-26 22:57:08 153 6

原创 代码从 “ctrl+F5” 到 “屏幕输出” 所经历的过程详解——翻译环境(编译+链接)+ 执行环境

文章目录前言翻译环境编译 = 预编译 + 编译 + 汇编链接执行环境前言我们用编译器写完代码后,只需Crtl+F5即可让代码跑起来,最后将结果输出到屏幕上,那么你知道在这个过程中都经过了哪些步骤吗?其实,在ANSI C(标准C)的任何一种实现中,都存在两个不同的环境,即翻译环境和执行环境。翻译环境,在这个环境中,代码被转换为可执行的机器指令。执行环境,它用于实际执行代码。我们运行代码时都将经历这两个过程,最后才将运行结果呈现在屏幕上。翻译环境在翻译环境下,要经历两个过程,即编译和链接。我们写的

2021-03-25 19:13:05 2374 12

原创 单向链表的创建与遍历

文章目录前言创建单项链表遍历单项链表测试代码正确性前言链表这个词想必大家都听说过,链表是一种常见而重要的基础数据结构,也是实现复杂数据结构的重要手段。它不按照线性的顺序存储数据,而是由若干个同一结构类型的“结点”依次串联而成的,即每一个结点里保存着下一个结点的地址。链表有很多种不同的类型:单向链表、双向链表以及循环链表。接下来我们来看看如何创建以及如何遍历单项链表。创建单项链表我们知道链表是由多个结点组成,所以要想创建一个链表,首先要创建一个结点。一个结点存储的内容可以分为两部分:数据域,指针域。

2021-03-24 15:35:15 2223 18

原创 文件操作函数(四)—— 文件的结束判定

文章目录前言前言

2021-03-23 17:41:50 887 6

原创 文件操作函数(三)—— 文件的随机读写

文章目录前言前言

2021-03-23 08:55:04 2068 18

原创 文件操作函数(二)—— 文件的顺序读写

文章目录前言文件的顺序读写字符输入输出函数 - fputc和fgetc文本行输入输出函数 - fputs和fgets格式化输入输出函数 - fscanf和fprintf二进制输入输出函数 - fwrite和fread文件的随机读写前言在文件操作函数(一)中,我们已经学会了怎样正确地打开和关闭一个文件,即我们已经学会了一件事的开头和结尾,不要以为已经结束了,这才刚刚开始,真正重要的是打开了文件后,如何操作文件中的数据(输入数据和输出数据)。对文件数据的读写可以分为顺序读写和随机读写。顺序读写,即挨着顺序

2021-03-20 15:49:35 1086 8

原创 文件操作函数(一)—— 文件的打开与关闭函数

文章目录前言文件打开函数 - fopen函数介绍文件的打开形式相对路径与绝对路径文件关闭函数 - fclose前言我们已经了解了文件的基本概念,那么我们如何通过代码对某一个文件进行一些操作呢?比如如何打开文件、关闭文件以及如何向文件中写入或是读取数据呢?在头文件stdio.h中包含了一系列的文件操作函数,以便我们对特定的文件进行相应的操作。学会对文件进行操作后,我们就可以将代码与文件联系起来,这样能让编程变得更有意思不是吗?比如你可以用代码写一个游戏,当游戏结束后可以将游戏当前的数据保存到一个文件中,

2021-03-18 18:30:43 332 4

原创 关于文件你必须了解的一些基本概念

文章目录什么是文件?文件名文件类型文件缓冲区文件指针什么是文件?文件名文件类型文件缓冲区文件指针

2021-03-16 15:14:51 194 2

原创 可保存数据到文件的通讯录代码+代码分析

文章目录前言保存通讯录内数据到文件加载数据到通讯录代码总览前言在之前我们已经写过两个版本的通讯录了:第一个是静态版本的通讯录,该通讯录一运行起来就开辟了一大块内存空间,用于存储1000个联系人的信息,并且运行结束数据也就销毁了。该通讯录比较死板,存储的联系人信息最多就是1000个,你若是没有那么多联系人信息需要存储,那么空间就白白浪费掉了,你若是还有更多的联系人信息需要存储,该通讯录也不能再增加容量。第二个是可以根据用户需要存储的联系人个数,按需开辟内存空间以供用户使用的动态版本的通讯录,该通讯录解

2021-03-15 15:36:21 99 2

原创 斐波那契数(Fibonacci)递归求法与迭代求法及它们各自的优缺点

文章目录什么是斐波那契数列?递归方法求第n个斐波那契数迭代方法求第n个斐波那契数递归法与迭代法各自的优缺点什么是斐波那契数列?斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)

2021-03-13 13:22:07 187

原创 C语言中运算符的优先级问题(如何巧妙记忆运算符的优先级顺序)

文章目录C语言中的运算符C语言中运算符的优先级帮助记忆优先级的方法先粗分再细分最后吃透因不明确优先级而造成的常见问题C语言中的运算符C语言中的运算符说多也多,说不多也不多,包括以下运算符:运算符类别运算符下标引用、函数调用和结构成员[ ]、( )、->、.单目运算符!、~、++、–、+、-、sizeof、(type)、*、&算术运算符+、-、*、/、%移位运算符<<、>>关系运算符>、>=、<

2021-03-12 20:40:25 376

原创 动态开辟内存空间的通讯录代码+代码分析

文章目录前言改进通讯录类型改进初始化通讯录的函数改进用于添加联系人的函数增加销毁通讯录信息的功能代码总览前言在通讯录代码+代码分析中,我们已经实现了通讯录的基本功能,但是细心的博友可能已经发现了,这个通讯录是一个静态的通讯录,一进入该通讯录就会开辟一大块空间,用于存放1000个联系人的信息。这样的做法其实是不合适的,对于某些不善于交友(或者说只交挚友)的朋友们来说,这种通讯录会消耗不必要的内存空间,因为它们的通讯录中可能只有几十个联系人,一上来就开辟用于存放1000个联系人的内存空间未免有些“奢侈”;

2021-03-11 23:10:30 101

原创 柔性数组(0长度数组)

文章目录什么是柔性数组?柔性数组的特点柔性数组的使用模拟实现柔性数组的功能柔性数组的优势什么是柔性数组?柔性数组这个概念相信大多数人博友都没有听说过,但是它确实存在。在C99中,结构(结构体)的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员。比如:struct S{ int n; int arr[];//柔性数组成员};或者是:struct S{ int n; int arr[0];//柔性数组成员};柔性数组的特点一、结构中柔性数组成员前面必须至少有一个其他成

2021-03-09 18:23:47 62 2

原创 位段

文章目录什么是位段?位段大小的计算位段的内存分配位段的跨平台问题位段的应用什么是位段?位段的声明和结构体是类似的,但有两个不同之处:位段的成员必须是int、unsigned int、signed int或char(属于整型家族)类型。位段的成员名后面有一个冒号和一个数字。举个例子:struct A{ int a : 2;//a只需要2个比特位 int b : 5;//b只需要5个比特位 int c : 10;//c只需要10个比特位 int d : 30;//d只需要30个比特位

2021-03-07 16:28:49 79

原创 动态内存管理(开辟以及释放动态内存空间)

文章目录前言malloc函数calloc函数realloc函数free函数 - 避免内存泄漏常见的动态内存错误前言如果我们被问道:如何创建一个可以根据用户需求来开辟大小的数组?可能有些博友会写出如下代码:#include <stdio.h>int main(){ int n = 0; scanf("%d", &n); int arr[n]; return 0;}这个代码在C99标准下是可以运行的,但大多数编译器并不支持C99标准,所以这种代码缺乏了跨平台性(可移

2021-03-05 22:31:26 290 2

原创 结构体内存对齐(如何计算结构体的大小)

文章目录结构体内存对齐规则结构体大小计算 - 三步曲为什么存在内存对齐?设计结构体时的技巧修改默认对齐数结构体内存对齐规则我们知道,整型变量有自己的大小,浮点型变量有自己的大小,数组也有自己的大小,那么结构体有没有自己的大小呢?回答是肯定的,结构体也有自己的大小,但是结构体的大小并不是简单地将每个结构体成员的大小相加就能得到。结构体的大小计算遵循结构体的对齐规则:第一个成员在与结构体变量偏移量为0的地址处。(即结构体的首地址处,即对齐到0处)其他成员变量要对齐到某个数字(对齐数)的整数倍的地址

2021-03-03 22:13:56 3238 13

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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