- 博客(15)
- 问答 (1)
- 收藏
- 关注
原创 顺序表的实现
但是需要注意的是一定得检查是否存在越界引发的异常,因为我们是直接从末尾删除数据,把他的地址往前移了一个单位,如果一直往前移一直往前移,不小心移动多了,也就是删除的数据比原有存储的数据多的多的多,程序是不会报错的,直接引发异常,然后再最后调试的时候找原因找了很久。头插就是在一个顺序表中的最开始的地方插入数据,由于顺序表是在一个连续的地址,所以在头插之前,我们需要把当前所有的数据整体往后平移,再插入新的数据x。注意,这里的参数部分我们应该直接传地址过去,形参的改变才会引起实参的改变,而不是直接传一个确切的值。
2024-02-07 16:05:19
641
1
原创 c语言文件操作
磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件,数据文件(从文件功能的角度来分类的)。程序文件:包括程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。本章讨论的是数据文件。在以前我们大多数所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。
2023-11-28 21:52:50
829
原创 动态内存管理
c语言提供了一个动态内存开辟的函数:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数size为0,malloc的行为是标准未定义的,取决于编译器。
2023-10-18 15:15:04
232
12
原创 时间复杂度讲解(数据结构)
既然开始学习数据结构,那么到底什么是数据结构呢?数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。那什么又是算法呢?算法就是定义良好的计算过程,它取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法那就是一系列的计算步骤,用来将输入数据转化成输出结果。
2023-09-13 19:43:56
300
9
原创 快速排序qsort讲解
如果我又需要对其他类型的数据排序,如浮点型,字符型等,那么就需要重新写一个冒泡排序的代码,十分的复杂。但是,void*指针是无具体类型的指针,它可以接收任意类型的地址。qsort默认是排成升序,如果想排成降序,我们只需要把上述代码中的return(*(int*)p1 - *(int*)p2);大家在c语言的学习过程中,冒泡排序是必不可少会学习到的一个思想,那么冒泡排序是怎么样的呢?hello大家好,我是c语言boom家宝,今天为大家分享的博客内容是qsort快速排序,简称快排的一个知识点的讲解。
2023-07-23 22:10:03
707
32
原创 指针大厂笔试真题讲解(c语言篇)
所以如果打印*(ptr-1)就是打印的5,而a表示首元素的地址,a+1就表示第二个元素的地址,*(a+1)解引用就打印的是2。第一个问题p的值为0x100000,p + 0x1就等于加一,这个加一表示着跳过一个结构体的大小,而结构体类型的变量大小是20字节,所以就等于加了一个十进制的20,换成16进制是0x000014,所以加起来就是0x100014.第二个问题要把它强制转换成unsigned long类型,无符号长整型的加减法就是直接的加减法,加上1就表示值的大小加1,所以输出结果就是0x100001。
2023-07-22 17:43:53
593
29
原创 c语言指针进阶(二)
但是仔细研究又觉得代码重复部分实在太多,这些代码从主函数到加减乘除四个函数的逻辑和代码格式基本都是相同的,那我能不能把他们直接放在一起,等具体需要什么就可以直接调用什么呢?回调函数不是由函数的实现方直接调用,而是特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。上一篇博客有提到函数指针的使用,那么函数指针数组呢顾名思义就是数组每个元素都是函数指针的类型,就叫做函数指针函数。回调函数的用处很大,例如c语言中一个经典的库函数qsort,快速排序,就是利用的这个回调的思想。
2023-07-16 21:16:13
536
17
原创 用c编程简单推测谁是凶手--------培养编程思维
拿到这个题目,我们可以先简单推理一下:四个人只有一个人说了假话,那先假设a说的是假话,那么a就是凶手,b说的是真话,那么凶手就是c,结果矛盾,所以a说的是真话。如果b说的是假话,那么凶手不是c,a说的真话,所以凶手也不是a,c说的是真话,所以凶手是d,d说的也是真话,那么又矛盾了。所以b说的也是真话,如果是c说的假话,那么凶手就不是d,d说的是真话,与真实情况也相符,b说的也是真话,那凶手就是c,a说的话语也是符合真实的,故可以推断出凶手就是c。
2023-06-22 11:52:54
765
25
原创 利用c语言预测比赛结果------培养编程思维
我们能看到计算机给出了好多答案,这是因为我们没有考虑到会有名次相同的情况,针对这个问题,我们可以加一个if语句判断,例如让a不等于b且b不等于c......。也可以简单一点,如果名次不一样,那就是依次为1、2、3、4、5名次,乘机就为1*2*3*4*5=120。大家好,我是c语言boom家宝,今天给大家带来的是一个非常有意思的东西,也是培养初学者的编程思维,利用所学的编程语言去解决生活中的一些小问题。根据题目,一共有五位选手,所以我们先定义5个变量,分别赋初值为0;A选手说:B第二,我第三;
2023-06-19 20:14:12
401
12
原创 c语言中浮点数是如何存储的
但是我们知道,科学计数法中的E是可以出现负数的,比如十进制浮点数0.5,二进制就是0.1,在二进制里也就是1*2.0^(-1),E就是-1,是负数。所以就和无符号位的范围相悖,对于这种情况,IEEE754就提出,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127,对于11位的E,这个中间数是1023。所以规定,在对M保存的时候,都默认第一位是1,故而不在保存这个1,而是直接对小数部分进行存储,也就是这个xxxxxx部分。(二进制,所以只有0和1)M表示有效数字,大于等于1,小于2。
2023-06-06 00:39:34
275
27
原创 c语言中整型是如何存储的
再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,然后把先得到余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,以此排列起来。相信小伙伴们在c语言的学习中,会有非常非常多的疑问,但是老师又不会带大家去深入了解这些的原理,只让大家去学习语法,然后体会编程逻辑,用这些语法再去完成程序的实现。负数反码由原码的符号位不变,其他位按位取反得到,然后反码+1就是补码。小端字节序存储:把一个数据的低位字节的内容,存放在高地址处,把一个数据的高位字节的内容,存放在低地址处。
2023-05-28 15:11:47
139
22
空空如也
devc++编译不显示结果
2022-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人