自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构--链表总结(上)

链式存储就是在逻辑上相邻的数据元素在内存中并不连续,而是靠指针连接。单链表:每个结点包含一个数据域和一个存储下一个结点的指针域。链表又分为单链表、双链表、循环链表、静态链表。线性表的存储结构分为两种:顺序存储-顺序表。如果是最后一个结点需要特殊处理。*链表--链式存储的线性表。不带头结点的按位序插入。指定结点删除(带头结点)带头结点的按位序插入。

2023-09-04 20:40:19 43 1

原创 C 语言 -- 数据类型

char 表示字符类型的数据,但是其在计算机内存中存储的是其对应的 ASCII 码值,所以划分到整型家族,char 到底是 signed char 还是 unsigned char 标准未定义,取决于编译器。其中除了 char 类型,我们平时写的 int,long,short 都是 signed int,signed long,signed short ,只是我们平时把 signed 省略掉了。void 表示空类型,也就是没有类型,通常用在函数的返回类型,函数的参数,指针类型。结构体类型 struct。

2023-08-22 19:03:49 47 1

原创 表达式求值

简单来说,因为计算机在内存中只能执行整数的运算,所以我们内存中所有的大小低于整形类型的数据在使用的时候都要将其提升为整形进行计算,例如在字符和短整型做操作数使用之前,会被转换为普通整型,以获得这个精度。例如一个 int 类型的数据和 long int 类型的数据运算时,会把 int 转换为 long int 类型。注:要在一个表达式中比较两个操作符的优先级的前提必须是相邻的两个操作符,如果优先级相同,取决于他们的结合性。整型提升:C 的整形算术运算总是至少以缺省整型类型的精度进行的。

2023-08-21 19:36:50 47 1

原创 调试(一)

因为随着计算机不断深入我们的生活,计算机键盘的生产更多地是面向大众,而以往的 f 键的功能也被附加了其他的功能,例如屏幕亮度,声音调节等。如果要恢复 f 键本来的功能,需要配合 fn 键一起使用。release 是发布版本,往往进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。注:VS 中 debug是调试版本,包含调试信息,并且不做任何优化,便于程序员调试。f5 直接运行到断点处(逻辑上的断点,例如如果遇到需要输入数据的时候也会停止)f10 一步一步运行,但不进入函数内部。

2023-08-17 19:25:33 42 1

原创 C语言--结构体初阶

第一种情况传的是结构体变量本身,此时要用一个相同类型的结构体变量(行参)来接收,行参是实参的一份临时拷贝,需要在内存中申请一块空间,然后通过变量名.成员来访问。结构体传参尽量使用第二种,因为函数传参的时候,参数是要压栈的,如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能下降。第二种情况传的是结构体变量的地址,此时需要一个结构体指针来接收,然后通过 指针变量->成员来访问。结构--结构体是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。

2023-08-13 19:07:24 62 1

原创 C语言--指针初阶(二)

当执行完 test 函数后,创建的局部变量 a 还给操作系统,这里的 p 依然存的是当时 a 的地址,但是这个地址已经不属于当前程序了,并没有访问的权限,所以这里的 p 是野指针。这里的 P是一个指针变量,没有初始化,也就意味着没有明确的指向,或许指向的内存空间没有权限使用,属于野指针。当指针指向的范围超出数组 arr 的范围时,p 就是野指针了。(三)指针指向的空间释放(这块空间不属于当前程序了)指针减指针的绝对值得到的是指针与指针之间元素的个数。用指针给数组元素赋值(方法一)

2023-08-12 19:26:38 25 1

原创 C语言--指针初阶(一)

假设 32 位的机器有 32 根地址线,每根能产生高低电平也就是(1/0),这样就能产生 32 位二进制序列,而这 32 位二进制序列就是一个内存单元的地址,需要把这 32 位二进制序列存储起来,就需要 4 个字节的空间,所以指针的大小只取决于多少位的平台。所以,这里是真的类型,当你希望一个字节一个字节访问时,就用 char*,当你希望一个整型一个整型访问时,就用 int*等等。指针的类型有 char 类型,int 类型,float 类型等等,在 32 位平台上,这些指针的大小都是 4 个字节。

2023-08-11 19:58:06 25 1

原创 C语言操作符(二)

判断表达式 1,如果为真,执行表达式 2,如果为假,执行表达式 3。例如"abc"=="asdf"不能判断两个字符是否相等。从左往右算,整个表达式的结果是最后一个表达式的结果。|| 左边为真,右边就不计算了。表达式 2 : 表达式 3。[] 双目操作符,一般用来访问数组。注:不是所有的对象都能用这些表达式来比较。&& 左边为假,右边就不计算了。. 结构体成员.成员。-> 结构体指针->成员。|| 逻辑或。结构体成员访问操作符。

2023-08-09 20:01:10 21

原创 C语言操作符(一)

除法,可以表示整数除法,也可以表示浮 点数除法,要想执行浮点数除法必须有一 边或两边是浮点数。a = x = y+1 连续赋值(不建议写,不易于调试调试时不清楚每个变量具体变化过程,代码可读性不好)《 左移操作符,移动的是二进制位且只针对 整数,左移一位有乘二的效果。》 右移操作符,移动的是二进制位且只针对 整数。sizeof 操作数类型长度(可以是变量,类型)注:移位的位数不能是负数,必须是整数。

2023-08-08 19:13:09 17

原创 初识冒泡排序

因为上面冒泡排序里面的行参看似是数组,实际上是指针变量,因为传过来的是一个数组名,数组名在这里表示的是数组首元素的地址,所以要用一个指针变量来接收,所以这里在冒泡排序里面计算的数组大小实则是指针变量的大小。每一趟两两比较,用一个 for 循环比较第一个元素和第二个元素,如果前面一个大于后面一个就交换,否则就不变,然后依次往后推。这里有一个常见的错误就是在冒泡排序里面计算数组的大小,这样计算的并不是传过去数组的大小,而是指针的大小。冒泡排序是解决排序问题时的一种思路,大致就是两个相邻元素进行比较。

2023-08-07 18:41:24 21

原创 接受一个整型值(无符号),按顺序打印它的每一位--函数递归

我们是想把 1234 单独按顺序打印出来,可以把这个任务拆分成:把 123 单独打印出来,然后再单独打印一个 4,这样就降低了原来任务的规模,但是又与原问题相似,这就是递归。一、函数嵌套是将一个函数作为另一个函数的参数来使用,是调用其他函数,有时候还能好几个函数互相交叉调用;而函数的递归是在定义函数的时候调用自己。这样我们就把原来单独打印 1234 的任务层层剥离出来,逐渐减小问题的规模。二、函数不能嵌套定义,而递归是可以在函数体内部调用自己的。简单来说函数递归就是一个函数在其定义的时候调用自己。

2023-08-05 20:02:23 38 1

原创 写一个函数交换两个整型变量的内容

实际上我们通过函数创建两个整型来接受我们的实参,这里传进去的 a,b 是实参,x,y 为行参,但实际上行参创建了是有自己的一个地址的,和实参的地址并不一样。所以当我们交换了两个变量的内容时,实际上交换的只是两个行参的值,实参所在地址的值并没有改变。这里我们运用到了指针的知识,把 a 和 b 的地址传进去,这样在函数那里就要用指针变量来接收。这样通过*解引用,*x 就是 a 变量所在地址里面的值,就可以通过一个中间变量来交换了。可以看见这里的两个变量的内容并没有交换。

2023-08-03 21:04:46 97

原创 用C语言计算 1-10 的阶乘之和

分析:通过自定义一个 fac 函数进行计算传入参数的阶乘。例如传入 3,则 i 从 1 乘到 3,并且将值保存到 ret 中返回。主函数中,根据输入的 n 控制循环次数,并且用 for 循环将每一次计算的阶乘累加到 sum 中。其中 for(表达式 1;因为每一次都要重新计算一次阶乘,所以还可以继续优化。首先会涉及到 C语言 for 循环的相关知识。表达式 1:循环的初始条件。两层 for 循环嵌套。表达式 2:循环的判断。表达式 3:循环的调整。

2023-08-01 15:34:31 792 1

空空如也

空空如也

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

TA关注的人

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