- 博客(37)
- 收藏
- 关注
原创 《明解C语言入门篇》读书笔记四
输出结果首先就让我们“输入一个整数”,可见并不是先判断循环条件(因为最开始retry为1,判断的条件为假),这就是do-while语句的特点,即无论循环条件是否为真,都会先执行一次循环,这次循环执行结束之后,再判断循环条件,如果为真就继续循环,为假就跳出循环。复合赋值运算符有:+=(加等)、-=(减等)、*=(乘等)、/=(除等)、%=(取模等)、&=(按位与等)、|=(按位或等)、^=(按位异或等)、<<=(左移等)、>>=(右移等)。通过逻辑非运算符(!在C语言中,0表示假,一切非0表示真,所以!
2025-04-27 23:08:41
1123
原创 《C陷阱与缺陷》读书笔记(一)
这个代码中误将“==”写成了“=”,导致最开始是为c赋值为空字符串,那这行语句恒为真,所以“||”运算符有一个短路现象,它就不会向下执行,也就不会判断c是否等于“\t”和“\n”了。上面代码本意是判断x和y是否相等,如果它们相等,就跳出循环,但是却将“==”误写成了“=”,这样一来if条件判断语句永远为真(赋值语句的结果恒为真),所以就会跳出循环,没有判断x和y相等这一过程。“&”可以翻译为“and”,“|”可以翻译为“or”,所以它们表示的是二进制的按位与和按位或。或者还可以将“==”判断改成“!
2025-03-09 23:24:01
642
原创 C++中的析构函数
C++中的析构函数非常简单,它的功能无非是帮助我们自动归还堆区的空间给操作系统。当我们使用内存开辟函数(如malloc()、realloc())等,如果忘记使用free()函数归还所开辟的空间,在有些时候就可能造成内存泄漏(比如调用一个函数去开辟空间,结果没有将空间释放,出了函数之后,指向所开辟空间的指针找不到了,这块空间也就找不到了,引发了内存泄漏)。
2025-03-09 21:39:10
343
原创 C++中的构造函数
在C++中,当创建一个对象之后,就会自动调用构造函数,那啥是构造函数呢?构造函数是C++中提供的一种函数,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。并且析构函数支持函数重载和使用缺省参数,这就大大方便了我们使用构造函数。
2025-03-09 21:25:42
466
原创 用漫画手把手教你创建属于自己的单链表
我们再分析一个问题的时候,是不是都是经典三连问“我是谁?我在哪儿?我在干什么?”,所以我们这里提出问题,“什么是单链表?为啥要学习单链表?它能干什么?它的优缺点分析?通过接下来的分析逐步解决。我们先讨论什么是数组?(如果还有连数组都不清楚的小伙伴,那接下来可得好好看了,这块内容会的可以先往下翻)都知道计算机内部有一个内存吧,比如我们常说的8G、16G,这就是内存的容量。而内存空间是存储这些容量的地方,并且内存空间是连续的(这样设计是便于我们使用的)。
2025-03-04 12:06:32
1261
原创 C++函数重载
这也就是为什么构成重载的函数,编译器同样知道该调用哪个函数,因为它们的新函数名有点不同,一个中间是HN,另一个是NH,也可以看出VS使用H代表int类型,N代表double类型。:汇编阶段将汇编代码转换成二进制机器码,形成符号表。在VS中,汇编阶段生成的目标文件是.obj文件,gcc中,生成的目标文件是.o文件。函数返回值不同不能构成重载,两个命名空间的完全相同的函数不构成函数重载,只有在同一命名空间下才可能会构成函数重载。,当有同名的函数构成函数重载时,它们的新函数名并不相同,所以C++允许函数重名。
2025-03-02 21:24:46
1063
原创 读《暗时间》——“怎么花两年时间去面试一个人”有感
首先,未鹏老师的“怎么花两年时间去面试一个人”这篇文章中,并不是单纯的讲一个面试官为了找到优秀、符合公司招聘标准的人才而去面试了两年,实际上是在讲一个程序员(或者说是计算机爱好者、在校即将找工作的大学生等)该如何花两年左右的时间提升自己,将自己锻炼成为一名符合公司要求的、优秀的、有强大的自学能力和思考能力的准程序员。前段时间拜读了刘未鹏老师《暗时间(第二版)》虽然只读了其中的一篇“怎么花两年时间去面试一个人”,但也是振奋我心,酣畅淋漓,我也是有所感悟和总结,在此分享给大家。一是长期坚持读优秀的技术书籍。
2025-02-27 23:57:19
688
原创 深入理解C++中的引用(&)
小伙伴们在学习C语言的时候是不是经常遇到'&'这个符号,在C语言中它具有三种意思,一是取地址操作符,二是二进制按位与,三是当两个'&'放在一起的时候,表示逻辑与。而C++中保存了这些用法,同时也为'&'赋予了一层新的含义——引用(C++11中,'&&'表示右值引用,这个以后再说)。C++中的引用是一种复合类型,就像指针一样。注意啊,这里埋了一个小伏笔。那引用是什么呢?它其实就是为一个变量取别名,那么通过操作这个引用就可以间接操作变量了,下面看引用的基本用法。//引用的基础用法。
2025-02-27 20:16:49
1800
1
原创 C语言实现通讯录项目
通讯录可以执行的操作有添加联系人信息、删除指定联系人、查找指定联系人信息、修改指定联系人信息、显示联系人信息、根据联系人的某些信息(年龄、姓名、电话等)对联系人进行排序等。实现一个可以存放100个人的信息的通讯录(这里采用静态版本),每个人的信息有姓名、性别、年龄、电话、地址等。
2025-02-26 20:09:55
243
原创 C语言中的内存函数使用与模拟实现
虽然在VS编译器上使用memcpy()函数可能也能拷贝内存重叠的情况,这是因为VS编译器对memcpy()函数功能实现与memmove()函数相同,但不是所有的编译器都这样。memmove()函数的功能与memcpy()函数大致相同,只不过一个是可以原地拷贝,另一个是异地拷贝。C语言的memcpy()函数主要拷贝不重叠的内存,重叠的内存由memmove()函数拷贝。,第一个参数是目的空间,第二个参数是源空间,第三个参数是指定的字节数,使用该函数时,不能设置常量字符串,另外指定的是字节数,不是元素个数。
2025-02-26 20:04:40
529
原创 逼疯程序员的命名冲突问题,竟被namespace给解决了
namespace?不知道各位小伙伴们在C语言中,是否有被函数、变量等重名定义时的报错所困扰,反正我是经常遇到啊,但是在C++中就解决了这个问题,这是咋解决的呢?对,就是改变量名字,就是使用今天的主角namespace。那又有小伙伴问了,这个单词是啥意思呢?它的学名叫做“命名空间”。那它是不是还有小名,对,我一般称它为“二舅家的菜地~”,不对,称它为“解决重名的利器”。
2025-02-25 22:14:27
868
原创 探索浮点数在内存中的存储(附带快速计算补码转十进制)
比如1100 0101转换成十进制,。个人觉得第1种最常用,但是比较慢,第2、3种实际上差不多(第三种甚至比第二种还慢),第4种最快(因为对我们来说,取负操作要比含有负数的减法更受欢迎)。下面补充一种更快的计算数字相加的方法,是不是经常对于1+2+8+16+32这样的一串数字相加比较头疼,今天快速计算方法,8以下的数字一起计算(一眼就能算出结果),128以下的数字一起计算(绝大多数都是最大计算到128),那么剩下的就是8+16+32+64这种,只需将。
2025-02-24 00:01:16
1296
原创 C语言实现链表,为什么要使用二级指针?
想必在使用C语言实现单链表的过程中,对头插、头删、尾插、尾删操作为什么要使用二级指针搞的稀里糊涂的,那么下面我来详细解读一下。
2025-02-22 19:35:45
1142
原创 《明解C语言入门篇》读书笔记三
但这却是正确的写法,之所以这样写是因为if条件结构是从上到下依次执行的,所以如果month不在区间[1, 12]中,就会输出该月份不存在,之后如果是小于等于2,大于等于12,就直接输出改月份是冬季,所以执行到这里,month只能是区间[3, 11]之间的数了,如果大于等于9就是秋季。反之,表达式的结果非零,就为真,就执行puts语句。下图是if语句的语法结构图,这也是最基本、最常见的一种,首先判断if语句中的控制表达式的真假,如果为真,就执行if语句中的内容,否则执行else语句中的内容,所以。
2023-06-08 11:40:20
575
2
原创 《明解C语言入门篇》读书笔记二
使用%运算符时,有一个规律:一个数如果取余(也称为取模)10,就是拿到这个数的个位,取余100,就是拿到这个数的个位和十位,以此类推,那么当想要获取一个数字的个位时,就可以使用%运算符。//获取整数的个位和十位int main()int no = 0;printf("请输入一个整数:");//键盘输入1357printf("个位是%d。//打印结果为:7printf("十位是%d。//打印结果为:5return 0;
2023-06-03 21:01:37
347
1
原创 时间复杂度计算方法
在学习数据结构阶段,认识的第一个概念应该就是时间复杂度了。时间复杂度是一个数学上的一个函数式,该函数式计算的基本执行次数,就是时间复杂度。通俗的说,时间复杂度就是衡量这个算法的运行时间长短,效率高低的一个手段,它是通过粗略的计算算法的执行次数来衡量的。那时间复杂度该怎么计算呢?
2023-05-29 20:09:28
1252
原创 《明解C语言入门篇》读书笔记一
注:本章内容完成,再次我认为作者的代码有一些风格不是很好,比如声明变量后不初始化(可能会导致访问的变量是随机值)、使用的注释不太好用(作者使用的注释是C语言的注释,但是这个注释不支持嵌套,一些复杂代码注释时可能不太好用)、一行存在多条语句(会降低代码的可读性)等,关于这些问题,我解决方法是:在之后的章节学习中,声明变量同时进行初始化、使用C++的注释(//,它支持嵌套使用)、一行只写一条语句。从上面的代码可以看出,变量就是用来记录值的,这个值是可以被改变的,如果再次对vx和vy赋值,那么它们的值就是新值。
2023-05-28 22:41:03
472
1
原创 C语言中结构大小的计算
结构体是C语言中的自定义数据类型,也就是需要使用者自己定义,定义结构体需要使用关键字struct,那么结构体的大小该怎么计算呢?下面我们一起探讨一下。
2023-04-26 10:15:48
473
原创 数据在内存中是怎么存储的?
大小端是知道整数在内存中是以补码的形式存储的之后,探讨在补码在内存到底是以怎么的方式存储的,这就涉及到了大小端。大端就是把数据的低位字节的数据存放到高地址处,高位字节的数据存放到低地址处。小端就是把数据的低位字节的数据存放到低地址处,高位字节的数据存放到高地址处。那么为什么会有大端存储和小端存储呢?实际上不仅要把数据放到内存中方便,还要方便取出来,所以在存储时就有了这两种储存模式,在VS编译器中,数据就是以小端的形式存储的。
2023-04-26 09:42:03
313
原创 printf函数和scanf函数的转换说明
printf函数与scanf函数是C语言中使用最广泛的两个输入输出函数,简称为I/O函数,它们可以实现用户与程序之间进行交流,并且它们的工作原理基本相同,两个函数也都使用格式字符串和参数列表下面让我们一起看看吧!
2023-04-24 17:47:48
484
原创 模拟实现strcat函数时的一些小发现
造成这个错误的原因是追加字符串时,找第一个\0的过程中,由于前置++的优先级要比*优先级高,所以是先++找下一个字符,这样首字符的\0就很轻松的被混过去了。的好处,这样可以简洁高效的执行代码,那么我想在模拟实现strcat函数时,还能否这样写呢?在调试时我发现了问题,字符串追加不是应该在目标字符串\0处开始吗,这个程序就存在bug。就当我认为已经正确时,我发现如果目标字符串第一个字符就是\0的话,这个程序又不正确了。在经过调试修改之后,我发现使用前置++,对此时的结果的输出正确。我发现了循环内部写成。
2023-04-12 17:41:36
122
原创 一次讲透原码、反码和补码
在计算机的世界中,存在着原码、反码和补码的概念,那它们到底是什么呢?说白了,它们只不过都是二进制序列,只不过是不同的表示而已。我们都知道,,所以想了解原码、反码和补码的第一步就是知道如何将其他进制数转换成二进制数。
2023-04-10 21:56:15
530
8
原创 最详细的C语言操作符讲解!!!
在C语言中,提供了许多的操作符,分为算术操作符、移位操作符、关系操作符、逻辑操作符、单目操作符、双目操作符、三目操作符等,那么这些操作符都是什么呢?都怎么用的呢,下面让我们一起来看看吧!
2023-04-10 21:07:49
519
原创 C语言实现扫雷游戏
扫雷游戏是一款历史悠久的益智小游戏,游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。这款游戏有初级、中级、高级玩法,那么怎么用C语言实现呢?
2023-04-10 11:12:45
112
原创 详细讲解怎样把代码提交到Gitee中
Gitee是基于Git的代码托管和研发的协作平台,在上面可以托管个人或公司的代码和开源项目。随着我们的代码越写越多,文件所占的空间也越来越大,所以这时候可以把写过的代码放到Gitee上面保存,方便我们今后的阅读。国内有Gitee网站,国外有GitHub网站。
2023-04-02 22:17:04
7093
10
原创 C语言中的关键字
unsigned:修饰变量时表示无符号的变量,比如unsigned int(无符号整型)、unsigned float(无符号浮点型)。signed:修饰的变量表示有符号的变量,比如signed int(有符号整型)、signed float(有符号浮点型)。extern:用来声明外部符号的关键字,使用该关键字可以使其他.c文件中的变量或函数等能在当前.c文件中使用。default:一般与switch语句搭配使用,是switch case语句的默认选项。else:一般与符语句搭配使用,作为其中的一个分支。
2023-02-21 22:18:09
192
原创 static关键字在C语言中的作用
static是C语言中的一个重要关键字,译为“静态的”,它可以用来修饰局部变量、全局变量和函数。在了解static的功能之前,先要知道内存简单的构造。
2023-02-21 22:01:32
721
原创 自定义函数求两个整数的和
自定义函数就是根据需要自己定义的函数,他的作用就是帮助我们实现我们想实现的功能。在定义函数时,需要注意以下几点:1、函数名不可忽略。一个函数必须又一个合法的函数名,函数命名时不能出现空格、汉字和特殊字符,只能由字母(区分大小写)、数字(不能开头)、下划线组成。2、函数返回值类型:函数实现功能后可能会返回一个值,这个值的类型是什么,函数的类型就是什么;如果无返回值,类型可以是void。3、函数参数:函数参数是帮助实现函数功能的元素。
2023-02-17 21:29:06
2805
1
原创 C语言的函数到底是什么?
相信很多小伙伴们在学习C语言时经常听到这样的话:C语言的基本单位是函数,那么函数到底是什么呢?它的结构有是什么呢?都有哪几种类型呢?下面我来告诉大家。简单来说就是。说到底它是由许多行代码组成的,其存在的意义就是为了实现某些具体的功能,它的存在可以使复杂的问题变得简单。
2022-12-12 19:48:53
1598
1
原创 C语言中的数据类型
C语言中的数据类型有很多,不知道新学习的小伙伴们有没有搞混呢?有没有在学习的过程中觉得数据类型又多又难记,有好几个还用不上呢?今天我就来给大家梳理一下C语言中的数据类型。首先数据类型到底是什么呢?它就好比一个个盒子,而变量就是这个盒子的名字,为变量赋值就是向这个盒子里面装东西。没人会把过多的东西装进一个很小的盒子里,C语言也一样。所以要合理的使用数据类型。所以,为变量初始化时,放进去的东西不能超过盒子本身的大小,不然放不进去,编译器也会报错,比如下面的情况:所以这里只需要简单了解一下,如果所初始
2022-12-07 23:27:04
903
1
原创 VS2013屏幕窗口一闪而过问题解决
相信很多朋友在写代码的过程中会遇到下面的问题,就是第一次在使用VS2013打印输出时,屏幕窗口会一闪而过,没有看清打印内容。这个问题该怎么解决呢?首先,找到解决方案资源管理器,找到创建过的一个项目,右击选择属性。 接下来找到链接器——系统——子系统——控制台——确定即可。不知道有没有初学者不知道学习C语言到底该使用哪种编译器的。下面有我来为大家介绍。1、Visual Studio首先C语言的编译器有很多,最受欢迎、企业中使用最多的就是VS了,全称是Visual Studio。它有多种版本,比如VS2013、
2022-12-06 21:46:57
2078
1
原创 scanf与scanf_s函数你了解吗?
出现报错的原因是VS认为scanf函数是有风险的,不建议使用。但是其他的编译器仍然使用scanf函数,这就导致如果用VS2022写的代码使用了scanf函数,那么在其他的编译器上就编译不过去了,所以代码的跨平台性将大大地降低,为了避免这种情况,我们在项目的第一行(一定是第一行)加上。其实不仅仅是scanf函数,类似的strcpy、strcat等函数都被VS认为是不安全的,所以都要加上_s。这是因为桌面上的权限是够用的(是管理员权限),而C盘文件夹下的权限是不够的。写的代码的跨平台性就会大大地增加。
2022-12-05 22:00:33
1128
1
原创 手把手教你写第一个C语言程序
C语言是所有编程语言的基础,历经50多年的发展依然被众多编程者使用,那么怎么写C语言程序呢?下面我将从项目的创建开始一步步交大家写第一个C语言程序。
2022-12-05 21:35:58
10355
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅