![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 82
爱学编程的小马
这个作者很懒,什么都没留下…
展开
-
顺序表链表经典算法题
核心思想:定义三个指针,第一个只想为空,第二个指向头节点,第三个指向头节点的下一个节点。之后让头节点的next指针反转180°,三个指针依次往后走。循环这一过程,直到p2为空。要注意的是p3为空时不能解引用,否则编译器会报错。原创 2024-04-19 18:38:33 · 422 阅读 · 1 评论 -
带头循环双向链表专题
带头链表⾥的头节点,实际为“哨兵位”,哨兵位节点不存储任何有效元素,只是站在这⾥“放哨 的” “哨兵位”存在的意义: 遍历循环链表避免死循环。原创 2024-04-18 13:05:26 · 618 阅读 · 1 评论 -
数据结构:顺序表专题
常⻅的数值1、2、3、4.....、教务系统⾥保存的⽤⼾信息(姓名、性别、年龄、学历等 等)、⽹⻚⾥⾁眼可以看到的信息(⽂字、图⽚、视频等等),这些都是数据。原创 2024-04-08 15:43:23 · 1171 阅读 · 0 评论 -
c语言:预处理详解
举个例⼦:在预处理阶段,编译器会自动把代码中的MAX换成100。#define 机制包括了⼀个规定,允许把参数替换到⽂本中,这种实现通常称为宏(macro)或定义宏 (definemacro)。注意:参数列表的左括号必须与name紧邻,如果两者之间有任何空⽩存在,参数列表就会被解释为stuff的 ⼀部分。这个宏接收⼀个参数 x .如果在上述声明之后,把 SQUARE( 5 );置于程序中,预处理器就会⽤ 下⾯这个表达式替换上⾯的表达式: 5 * 5警告: 这个宏存在⼀个问题int a = 5;原创 2024-03-31 14:34:40 · 1379 阅读 · 3 评论 -
c语言:文件操作
磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。函数名功能适⽤于fgetc字符输⼊函数所有输⼊流fputc字符输出函数所有输出流fgets⽂本⾏输⼊函数所有输⼊流fputs⽂本⾏输出函数所有输出流fscanf格式化输⼊函数所有输⼊流fprintf格式化输出函数所有输出流fread⼆进制输⼊⽂件fwrite⼆进制输出⽂件。原创 2024-03-26 16:27:14 · 1248 阅读 · 5 评论 -
c语言(动态内存管理函数)
但是上述的开辟空间的⽅式有两个特点:但是上述的开辟空间的⽅式有两个特点:• 空间开辟⼤⼩是固定的。• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整 但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。C语⾔引⼊了动态内存开辟,让程序员⾃⼰可以申请和释放空间,就⽐较灵活了。原创 2024-03-22 14:48:08 · 1188 阅读 · 2 评论 -
c语言(自定义类型——结构体)
C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类 型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要 名字、年龄、学号、⾝⾼、体重等;描述⼀本书需要作者、出版社、定价等。C语⾔为了解决这个问 题,增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型。原创 2024-03-20 15:13:37 · 753 阅读 · 1 评论 -
c语言(数据在内存中的存储)
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8 bit 位,但是在C语⾔中除了8 bit 的 char 之外,还有16 bit 的 short 型,32 bit 的 long 型(要看 具体的编译器),另外,对于位数⼤于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度⼤ 于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。很多的ARM,DSP都为⼩端模式。对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。原创 2024-03-18 14:33:35 · 1020 阅读 · 0 评论 -
c语言(字符串函数和内存函数的模拟实现)
【代码】c语言(字符串函数和内存函数的模拟实现)原创 2024-03-16 17:25:03 · 283 阅读 · 1 评论 -
C语言:深入理解指针(4)(函数指针数组,回调函数)
那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?我们举个例子那怎样把这个函数的地址存放到数组里呢?首先,函数指针数组是一个数组,这个数组里只有一个元素我们就先写arr[1]。数组里存放的是函数指针,那就在前面加一个*,*arr[1]表示数组里存放的是指针。数组里存放的指针指向的是一个返回值为int ,参数也为 in t的函数。那就在*arr[1]前面写int ,后面写(int, int)。结果就是int *arr[1](int, int) = {Add}原创 2024-03-12 16:00:37 · 573 阅读 · 5 评论 -
C语言:深入理解指针(3)
在指针的类型中我们知道有⼀种指针类型为字符指针 char*;输出结果为:代码 const char* pstr = "hello bit.";特别容易让大家以为是把字符串 hello bit 放 到字符指针 pstr ⾥了,但是本质是把字符串 hello bit. ⾸字符的地址放到了pstr中。我们对指针变量pstr解引用,得到的其实是字符串的首元素。这⾥str3和str4指向的是⼀个同⼀个常量字符串。原创 2024-03-09 15:00:23 · 764 阅读 · 2 评论 -
c语言:深入理解指针(2)
这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且 是数组⾸元素的地址,我们来做个测试。输出结果:我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地 址。这时候有人会有疑问?数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。原创 2024-03-06 18:34:32 · 1363 阅读 · 1 评论 -
c语言:深入理解指针(1)
Swap1函数时,将a和b传递给了Swap1函数,在Swap1函数内部创建了形参x和y接收a和b的值,但是x的地址是0x00cffcec,y的地址是0x00cffcf0,x和y确实接收到了a和b的值,不过x的地址和a的地址不⼀样,y的地址和b的地址不⼀样,相当于x和y是独⽴的空间,那么在Swap1函数内部交换x和y的值,⾃然不会影响a和b,当Swap1函数调⽤结束后回到main函数,a和b的没法交换。答案是:指针变量中。在上⾯的代码中,将⼀个int类型的变量的地址赋值给⼀个char*类型的指针变量。原创 2024-03-03 19:42:32 · 1220 阅读 · 1 评论 -
c语言编写扫雷游戏(代码+代码详解)
欢迎对c语言感兴趣的小伙伴来一起学习,但开始阅读之前需要注意:代码的实现要有数组、函数,条件、分支、循环语句的基础,如果你是c语言小白,可以看我之前的博客来学习相关内容。下面我们正式进入扫雷游戏。1. 扫雷游戏分析和设计1.1 扫雷游戏的功能说明• 使⽤控制台实现经典的扫雷游戏• 游戏可以通过菜单实现继续玩或者退出游戏• 扫雷的棋盘是 9*9的格⼦• 默认随机布置10个雷。原创 2024-02-27 11:36:53 · 866 阅读 · 0 评论 -
c语言数组(一维数组+二维数组+巩固练习),内容详细,干货满满
数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。• 数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。原创 2024-02-03 19:42:27 · 999 阅读 · 1 评论 -
c语言分支循环案例:猜数字游戏
游戏要求:1. 电脑⾃动⽣成1~100的随机数2. 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束。原创 2024-01-31 16:35:39 · 548 阅读 · 0 评论 -
c语言分支语句和循环语句
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。 我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。if 语句的语法形式如下:表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是原创 2024-01-23 17:36:19 · 957 阅读 · 0 评论