- 博客(25)
- 收藏
- 关注
原创 LeetCode带环链表题深度解析(是否带环、寻找环的入口结点)
链表带环问题时常出现在面试当中,考察对快慢指针以及情况分析的能力。对于链表是否有环,通常可以使用 fast : 2 而 low :1 的快慢指针来判断,不相遇即无环,相遇即有环。对于环的入口节点,则让一个指针从起始点出发,另一个指针从相遇点出发(按原方向),以相同速度走,最终相遇于环的入口节点处。本文将深度解析,助力读者知其然并知其所以然。
2025-01-09 18:48:07
642
2
原创 C语言#define定义宏
宏,每个C语言学习者绕不开的话题,其使用简便又十分易错,稍不注意甚至处处小心仍然容易写出BUG。那么宏是什么,应该如何正确使用(减小使用错误概率)?今天让我们来一探究竟。
2025-01-08 17:16:41
1222
原创 整型变量和浮点型变量在内存中的存储
整型是一种数据类型,用来表示整数。整型数据可以是正数、负数或零,没有小数部分。浮点型(float)是一种表示小数的数据类型,用于存储包含小数部分的数字。与整数类型不同,浮点型可以表示带有小数点的数值,包括正数、负数和零。大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
2024-09-14 18:40:57
1140
原创 如何计算结构体变量的大小(结构体内存对齐)
在C语言中,变量由于类型不同在内存中开辟空间的大小不同,而结构体类型是一种特殊的变量类型,其可以是多个类型的集合,甚至结构体嵌结构体类型,那么结构体类型变量占内存空间的大小该如何计算呢?这也是一个特别热门的考点。
2024-06-20 15:32:17
693
原创 C语言 sizeof 和 strlen
因为a为二维数组,故数组名代表首元素地址,二二维数组首元素地址为第一行元素数组的地址,但是当其 +1 跳过4 * 4 = 16字节后,仍然还是个地址,作为指针变量,其占内存空间大小就为4字节,对其解引用,其效果相当于第二行元素组成元素的数组名,代表整个第二行数组,计算的是第二行数组大小,其大小为4 * 4 = 16字节。这里的6不是六个字节,而是六个字符元素。数组名不单独在sizeof出现,其代表首元素地址,对其取地址,那仍然还是一个地址,为二级指针,类型为int**,占内层空间大小为4字节。
2024-06-10 19:40:16
1036
2
原创 C语言函数指针变量、函数指针数组
不就是有两个参数,一个参数类型为int,另一个参数类型为void(*)(int)类型的函数么?指针变量是用来存放地址的,那么函数指针变量顾名思义就是用来存放函数地址的变量,什么?如果我们要将函数的地址存放起来,就得创建函数指针变量咯,函数指针变量的写法其实和数组指针非常类似。类型,那么不就意味着返回类型为一个指向一个参数类型为int,返回值为void的函数的指针么?把函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?,当然也可以通过 &函数名 的方式获得函数的地址。
2024-06-07 14:54:35
444
原创 C语言字符指针变量、数组指针变量
代码中的*(*(p + i) + j)很有说法,当p + i时,为 int *[5] 类型,当*(p + i) + j时,为 int* 类型,*(*(p + i) + j)时就为 int 类型了,逐层转变。第一行的一维数组的类型就是 int [5] ,所以第一行的地址的类型就是数组指针类型 int(*)[5]。第二天代码描述的是一个p2指针,其指向了一个,有10个元素,每个元素为 int 类型的数组。的区别,一个表示数组首元素地址,一个表示整个数组的地址,一个类型为 int* 一个类型为。
2024-06-07 12:00:00
1757
原创 C语言二级指针、指针数组
parr[ i ]是访问parr数组的元素,parr[ i ]找到的数组元素指向了整形一维数组,parr[ i ][ j ]就是整型一维数组中的元素。上述的代码模拟出二维数组的效果,实际上并非完全是二维数组,因为每行并非是连续的。数组每个元素为int类型,于是为 int arr[ 5 ] ,数组每个元素为char类型,于是为 char arr[ 5 ] ,那么如果数组每个元素为 int* (指针)类型,那么即为 int* arr[ 5 ]。指针数组的每个元素是地址,又可以指向一块区域。
2024-06-06 18:00:00
426
原创 C语言指针与数组名的联系
前二者都指的是数组首元素的地址,而后是指数组的地址,它们在。总结:一维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式,但其本质还是传递了数组首元素地址。,同理 arr[ i ] 应该等价于 *(arr+i),数组元素的访问在编译器处理的时候,也是。有了前面知识的支持,再结合数组的特点,我们就可以很方便的使用指针访问数组了。那么在数组传参的时候,传递的是数组名,也就是说本质上数组传参传递的是数组首元素的地址。放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。
2024-06-06 12:00:00
891
原创 C语言野指针、规避野指针、assert宏断言
概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)。一句话,任何指向非自己管理或者不想指向空间的指针都是野指针。
2024-06-04 11:39:09
1068
6
原创 C语言指针变量类型意义、指针运算
指针变量有不同的类型,在同一平台下,不同类型的指针变量大小是一样的,那么为什么还要分那么多种指针变量类型呢?指针作为一种数值是否可以进行计算呢?
2024-06-03 14:42:42
1061
2
原创 C语言指针变量、函数传值调用和传地址调用
同理64位机器,假设有64根地址线,⼀个地址就是64个二进制位组成的⼆进制序列,存储起来就需要8个字节的空间,指针变量的大小就是8个字节。在生活中,有许多对于空间管理的例子,比如我们的宿舍楼,像我所住的宿舍楼一层就有几十个房间,一栋宿舍楼下来就有上百个房间,这就和内存空间类似,而我们就像一个个存放在各个空间里的“数据”,如何快速的在宿舍楼内找到我所住的房间呢?)拿到的地址是⼀个数值,比如:0x006FFD70,这个数值有时候也是需要存储起来,方便后期再使用的,那我们把这样的。
2024-05-30 16:19:24
928
3
原创 C语言位运算详解(移位操作符、位操作符)
前言:C语言的位运算是基于整数的运算,因为C语言语法规定了移位操作符、位操作符的操作数只能是整数。
2024-04-27 12:42:02
4029
5
原创 调试的基本操作(VS2019)
作为程序员,写bug那简直是家常便饭,轻则几个重则几十个,你还在人脑查bug吗?学习调试,恐怕能给你带来不少的帮助以及对代码运行的理解。
2024-04-13 11:08:11
1697
3
原创 扫雷游戏分析+代码实现(C语言小程序)
前言:扫雷想必大家都有玩过,是非常经典的电脑小游戏,给儿时的我们带来了许多快乐,如今工作之余摸摸鱼时,也不失为一个不错的益智游戏,下面我们使用C语言来实现这个有趣的小游戏。
2024-04-11 17:36:30
1248
2
原创 C语言柔性数组详解
前言:也许你从来没有听说过柔性数组的概念,但其确实存在。C99规定结构中的最后一个元素允许是未知大小的数组,这就叫做“柔性数组”成员。
2024-04-06 22:49:46
710
3
原创 猜数字游戏+代码分析(C语言小程序)
前言:猜数字游戏顾名思义就是给出一个在规定范围内的数字,根据提示对其值进行猜测。这里我们将用C语言来对猜数字逻辑进行实现。
2024-03-29 20:42:40
1355
1
原创 C语言goto语句(可以不用,不能不懂)
前言:goto语句是一种编程语言中的控制流语句,被用来无条件地转移到程序中的另一个位置。它通常被认为是一种不推荐使用的语句,因为它可以导致代码难以理解和维护,并可能引发无限循环或不可预测的行为。也因此往往在提及goto语句时,都仅仅只是寥寥数笔。但是,存在即合理,可以不用,不能不懂。
2024-03-28 23:08:36
8654
5
原创 C语言while、do while、for语句构成的循环结构详解(含break、continue语句)
前言:C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合,下文将讲述C语言中循环结构相关语句语法。
2024-03-22 22:25:03
7664
1
原创 C语言if、switch语句构成的选择结构详解(悬空else问题、case与default顺序问题)
前言:C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合,下文将讲述C语言中选择结构相关语句语法。
2024-03-19 18:39:38
2160
原创 C语言++操作符前置、后置的区别(++操作符的副作用?)
++操作符是一种单目操作符,意味着其操作数只有一个,那么由于++操作符位于操作数的位置不同,分为前置++(例:++a)和后置++(例:a++),++操作符有自增属性,++后会使得自身数值改变,数值+1。
2024-03-18 18:43:50
1994
原创 C语言字符与字符串详解(含ASCLL编码、字符串隐含条件、转义字符)
当我们看向我们的键盘,除去空格、回车、control、shift等功能键外,剩下的键都标记着各种英文字母、数字、“#,^,*”等符号(仅英文输入法下),这类符号就组成了字符与字符串。那如何准确区分字符与字符串呢?我们来看定义:字符:字符是计算机中最基本的数据单位,它代表着一个字符,比如字母、数字或者符号等。在大部分编程语言中,字符通常用单引号括起来,比如 'a' 或者 '9'。字符串:字符串是由零个或多个字符组成的序列。它可以包含任意字符,比如字母、数字、符号、空格等。
2024-03-17 14:34:41
3581
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人