自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言实现常用数据结构:栈-顺序栈实现(第6篇)

栈栈是一种特殊的线性表,其特性是仅能在表尾进行插入或删除的操作,栈中元素的操作是按照后进先出的原则进行,因此栈又称为后进先出线性表(Last In First Out,LIFO数据结构)。栈顶:表尾端称为栈顶栈底:表头端称为栈底空栈:不含任何元素的空表称为空栈出栈:从栈中删除一个元素的操作称为出栈入栈:从栈中增加一个元素的操作称为入栈顺序栈实现栈有两种存储实现方法,一种是顺序存储实现,一种链式存储实现。考虑简单性和日常使用方便,这里使用顺序存储的方式实现,链式实现可以

2020-08-15 15:59:41 625

原创 C语言实现常用数据结构:静态链表-数组实现(第5篇)

静态链表使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系。实现要点:1.数组下标为0的位置为头结点,指向自身时表明链表为空。2.数组下标为1的位置为空间备用链表的头结点,保存未被使用的数组空间。3.数组下标代替指针来理解链表结构。备注:从逻辑结构来看,其实有两个链表存在的数组中,一个用于保存数据的链表,一个是未使用的空闲链表。另外链表其它实现参见:使用示例功能:输入数据个数和数据,逆序保存到顺序表,并逆序输出显示到屏幕。运行结果如下:请输入数据总个数:10请依次输入10

2020-08-14 16:06:39 1082

原创 谁写的代码,恶心

***1、***下面一段代码将注释和代码混在了一起,不认真看还真不知道。高亮显示后:***2、***看到这种多层嵌套恶心到头大。3、据说某俄国特工经过九死一生偷到了NASA的太空火箭发射程序的源代码的最后一页,代码是:))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

2020-08-14 15:58:23 1012

原创 新的程序开发模式出现,传统的嵌入式C语言程序员快要灭绝了?

在2000年前后,嵌入式软件工程师有着一套非常具体的技能,他们通常是电气工程师,不仅了解底层硬件的工作原理,还可以再底层编写汇编代码或者C语言代码,以使系统满足实时需求。嵌入式软件工程师不仅要了解诸如C语言的软件开发,还要了解硬件。位、字节、寄存器的世界,正是嵌入式软件工程师的领域。但是如今不再那么简单了。在早期,嵌入式开发人员通常使用 8 位或者16位的体系结构,这些结构比较简单,因此开发人员一般在几个月的开发周期内便能掌握这些结构。但是近些年来,许多嵌入式开发团队已经转向更加复杂的 32 位体系.

2020-08-13 18:45:19 454

原创 C语言实现常用数据结构:不带头结点的单链表(第4篇)

使用示例带头结点的单链表请参见:[C语言实现常用数据结构:带头结点的单链表(第3篇)https://blog.csdn.net/qq_43351159/article/details/107840078功能:输入数据个数和数据,逆序保存到顺序表,并逆序输出显示到屏幕。运行结果如下:请输入数据总个数:10请依次输入10个整数:0 1 2 3 4 5 6 7 8 9单链表输出结果:9 8 7 6 5 4 3 2 1 0单链表删除5位置数据后输出结果:9 8 7 6 4 3 2 1 0代码实现:

2020-08-13 15:55:45 332

原创 面试系列之C++的对象布局【建议收藏】

我们都知道C++多态是通过虚函数表来实现的,那具体是什么样的大家清楚吗?开篇依旧提出来几个问题:普通类对象是什么布局?带虚函数的类对象是什么布局?单继承下不含有覆盖函数的类对象是什么布局?单继承下含有覆盖函数的类对象是什么布局?多继承下不含有覆盖函数的类对象是什么布局?多继承下含有覆盖函数的类对象的是什么布局?多继承中不同的继承顺序产生的类对象布局相同吗?虚继承的类对象是什么布局?菱形继承下类对象是什么布局?为什么要引入虚继承?为什么虚函数表

2020-08-13 15:53:28 471

原创 你们要的各类编程语言书籍推荐

说明:1、每一个方向可能推荐不止一本,只选一本即可。2、有的书非常详细,底层的一些东西解释的很全面,这种时候没有必要去纠结里面的细节,可以先按照路线往后学,都弄懂了再回来研究这些细节。3、不管学什么,怎么学,一定记得多敲代码。4、初学时以顿开的视频为主,书作为参考,这样效果更佳哦。5、这里列举出来的只是常规的一些推荐,有的可能不是最新版,小伙伴们根据自己的需要来选择。6、有的数最新版推出的时间可能较短,所以评分不是很多,小伙伴注意选择最新版的购买。7、如果小伙伴有其他更好地入门书籍推荐,请.

2020-08-12 14:46:34 824

原创 计算机存储的大端法和小端法

01引言在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的)。对于跨越多个字节的数据类型(比如 int 长 4 个字节),如何在内存中对这些字节进行排序有两种常见的方法:大端法(Big-endian)和小端法(Little-endian)【注】首先不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。比如说:0x12345  &n

2020-08-10 15:51:01 1364

原创 C++ 流插入和流提取运算符的重载

—***** 1******—*<< 运算符的重载C++ 在输出内容时,最常用的方式:std::cout << 1 <<"hello";提出问题:那这条语句为什么能成立呢?cout 是什么?为什么 << 运算符能用在 cout 上呢?原因:实际上,cout 是在 iostream 头文件中定义的 ostream 类的对象。

2020-08-10 15:47:03 2252

原创 TIOBE 2020 年 8 月编程语言排行榜:C语言仍稳居榜首,值得关注的依然是 Go、R、Swift 等

TIOBE 已公布 2020 年 8 月的编程语言排行榜。在本期榜单中指数没有太大变化,编程语言R继续上升,依然成为2020年TIOBE的编程语言的明星语言。更值得关注的依然是Go、Swift和SQL在排行榜第10名的竞争。Swift排名落后了2个名次(#10到#12),取而代之的是SQL重新的回到了第十位。同样值得注意的是Groovy以牺牲Scratch的代价重新进入TIOBE指数前20,Hack以44的位置进入前50。编程语言前十排行榜前 10 名编程语言长期走势图:前 10 名编程语言长期走

2020-08-06 15:24:51 472

原创 C语言实现常用数据结构:带头结点的单链表(第3篇)

单链表单链表使用指针来保存线性表数据元素的关系。实现要点:1.使用指针来指向下一个数据元素。2.单链表分为带头结点的单链表、不带头结点的单链表。3.使用带头结点的单链表不需要对空表进行特殊处理,简化操作。优缺点和适用场景:适用于进行大量插入、删除操作的场景,不具备随机存取的特性,访问数据必须循环遍历。使用示例功能:输入数据个数和数据,逆序保存到顺序表,并逆序输出显示到屏幕。运行结果如下:请输入数据总个数:10请依次输入10个整数:0 1 2 3 4 5 6 7 8 9单链表输出结果

2020-08-06 15:06:34 2638 1

原创 掌握10个关键点,让你在ARM下进行高效的C编程

通过一定的方法来编写C程序,可以帮助C编译器生成执行速度更快的ARM代码。下面就是一些与性能相关的关键点:1.对局部变量、函数参数和返回值要使用signed和unsigned int类型。这样可以避免类型转换,而且可高效地使用ARM的32位数据操作指令。2.最高效的循环体形式是减计数到零(counts down to zero)的do-while循环。3.展开重要的循环来减少循环的开销。4.不要依赖编译器来优化掉重复的存储器访问。指针别名会阻止编译器的这种优化。5.尽可能把函数参数的个数限制在4个

2020-08-06 15:05:07 344

原创 函数调用的三种约定,你都清楚吗

__cdecl、__stdcall、__fastcall是C/C++里中经常见到的三种函数调用方式。其中__cdecl是C/C++默认的调用方式,__stdcall是windows API函数的调用方式,只不过我们在头文件里查看这些API的声明的时候是用了WINAPI的宏进行代替了,而这个宏其实就是__stdcall了。三种调用方式的区别相信大家应该有些了解,这篇文章主要从实例和汇编的角度阐述这些区别的表现形态,使其对它们的区别认识从理论向实际过渡。我们知道,函数的调用过程是通过函数栈帧的不断变化实现的

2020-08-06 15:03:22 370

原创 C语言实现常用数据结构:顺序表(第2篇)

顺序表顺序表使用一组连续的物理内存存储地址按照次序存放线性表的元素。实现要点:1.顺序表的长度可变。2.利用C语言的动态内存分配函数,动态分配内存,增加顺序表长度。3.顺序表初始分配一定大小的存储空间,当空间不足时,再次申请一定增量的空间。优缺点:1.顺序表具备随机存取特性,直接根据内存位置访问数据。2.顺序表插入和删除操作,需要移动大量元素。因此:顺序表适用于很少进行插入、删除操作,经常进行大量查询修改操作的场景。使用示例功能:输入数据个数和数据,逆序保存到顺序表,并逆序输出显示到屏

2020-08-05 15:59:52 599

原创 C语言实现常用数据结构:简要一览(第1篇)

线性表最简单的一种数据结构,具有相同类型的数据元素组成的序列。顺序表、链表是其两种简单实现。备注:数组也可以算一种简单的线性表。链表可以分为:带头结点的简单链表不带头结点的简单链表静态链表循环链表双向链表栈限定增加和删除数据操作只能在线性表的末端进行,因此是一种受限的特殊线性表。实现方式有:顺序栈链栈栈典型的特点是:数据“后进先出”,栈可以用来实现递归。栈数据结构的主要操作是出栈、入栈。队列限定增加数据元素在线性

2020-08-05 15:51:57 1972

原创 C语言实现常用数据结构:基本概念(第0篇)

写在前面:为什么学习C语言数据结构今天开始,我准备和一起分享学习C语言常用数据结构,这里不求事无巨细的掌握数据结构的方方面面,而是学习编程、考试等实际中常用的重要数据结构,这里以分享可以运行的代码为学习主要方式,因为可运行的代码有时候是最好的老师。数据结构和算法是十分重要的。C语言+数据结构+算法=C语言程序。考虑下编程的过程:对于一个真实的问题,编程解决步骤往往是:第一步分析问题,第二步找到数学方法“纸面上”解决它,也就是找到“算法”,第三步选择合适的数据结构存放数据,实现“算法”,第四步选择编程语言

2020-08-05 15:33:31 379

原创 C语言必学的12个排序算法:基数排序(第11篇)

基本思想基数排序(radix sort),同样时一种非比较的内部排序算法,主要基于多关键字排序的思想进行排序,它将单个关键字按照基数分成“多个关键字”进行排序。例如整数789是一个关键字,可以按照十进制位划分多关键字(十进制数字取值0-9,所以基数是10),从高到低分为三个关键字“7、8、9”,这样对每位关键字进行排序,即可得到排序。基数排序对关键字数据元素有要求,一般是等长的整数和字符串。基数排序是一种稳定的内部排序算法。时间复杂度是O(d*(n+radix),d是关键字位数,radix是基数。例如

2020-08-04 16:38:49 560 1

原创 C语言必学的12个排序算法:桶排序(第10篇)

基本思想桶排序(bucket sort),和计数排序(参见前一篇文章)有些类似,同样是线性排序算法,基本思想是将输入的待排序列n个整数数据元素,根据每个数据元素的取值范围[0,k],划分称为m个区间,每个区间称为桶,每个桶存放该区间的数据元素,由于每个桶内的数据元素个数不确定,可以使用链表表示,同时使用插入排序,让每个桶的链表有序。这样按照次序将所有桶的元素连起来就得到完整的有序列表。桶排序,和计数排序一样,对输入的数据元素有一定要求,需要根据数据元素特征容易划分桶,具体问题具体分析,以下均以常用的整数

2020-08-04 16:27:20 842 1

原创 C语言必学的12个排序算法:计数排序(第9篇)

####题外话计数排序时间性能比之前的排序算法高,在实际中应用较多,只需要O(n)时间即可完成排序。计数排序思想比较巧妙,建议大家对照课本多学习,本文主要给出能运行的实例程序。[C语言必学的12个排序算法:基础知识 (第0篇)]线性时间排序之前学习的快速排序、堆排序、归并排序都是一类基于比较的排序算法,需要通过比较关键字大小确定数据元素的位置。这类算法最优的时间复杂度只能到O(nlogn)。线性时间排序是一类非比较排序算法,时间复杂度O(n),不需要通过比较关键字大小即可完成排序。计数排序(coun

2020-08-03 15:46:24 512

原创 C语言必学的12个排序算法:归并排序(第8篇)

####题外话很多童鞋感受算法比较难度,的确,算法其实和C语言本身关系不大,算法是计算机科学家利用丰富的数学和算法设计知识研究出来,如今我们只需拿来主义,学习使用即可,当然这需要一定的努力过程。[C语言必学的12个排序算法:基础知识 (第0篇)]基本思想核心是归并思想,将两个或两个以上的有序数据记录序列合并成一个完整的有序数据记录序列,其时间复杂度O(n+m),其中m,n表示两个有序序列的长度。例如:对于A(1,3,5)和B(2,4,6)两个有序序列A和B归并成有序序列C。第1步:1和2比较,1被

2020-08-03 15:07:45 364

原创 C语言必学的12个排序算法:堆排序(第7篇)

#题外话堆排序比之前的简单选择、冒泡算法、快速排序算法复杂一些,因为用到了树形数据结构,但是本文使用了数组实现完全二叉树,因此也比较简单。C语言初学者,可以简单了解其思想,具体的知识掌握可以参照数据结构等专业课程学习。ps:昨天因为学习实在太晚,未及时更新,抱歉哈。学习C语言之余,觉得C语言编程,最重要的就是C语言语法+数据结构+算法,掌握这三方面基本上可以应付各种编程问题。为什么学习排序算法,可以参见前面文章~[C语言必学的12个排序算法:基础知识 (第0篇)]树形选择排序选择排序其实可以有简

2020-08-03 15:01:58 252

原创 C语言必学的12个排序算法:简单选择排序(第6篇)

基本思想简单选择排序(simple selection sort)是最简单的一种排序方式,其基本思想很简单,以从小到大排序为例,每趟排序在当前的待排数据记录序列中选择最小的元素放在前面,这样进行n-1趟排序以后,整个数据记录有序。简单选择排序是稳定的内部排序方法,时间复杂度是O(n^2)。同样举例来说:例如:给定10个整数:(4,3,1,2,6,5,0,9,8,7) 从小到大排序。第一趟子排序:针对整个数据记录(4,3,1,2,6,5,0,9,8,7)。选择最小的数据0,放入前面第一个数据4所在

2020-08-01 19:00:07 492

原创 C语言必学的12个排序算法:快速排序(第5篇)

基本思想快速排序(Quick Sort),本质上是对冒泡排序的改进,以从小到大排序为例,每趟排序将待排的数据记录分割成两个子数据记录,其中前一半的数据记录关键字比后一半的数据记录关键字小,这样递归分别对两个子数据记录继续分割排序,最终形成完整的有序数据记录。理解:冒泡排序相当于每次排序后,前面的数据记录关键子都比最后位置的数据记录关键字小,快速排序只要求每次排序后,以某个数据记录关键字为界,前面的一半比后面的一半小即可,这里的某个数据记录称为 枢轴或支点记录。快速排序时间复杂度是O(nlogn),在基

2020-08-01 16:34:14 214

原创 程序员的“三十而已”,你都30岁了,不会只有xxx吧?

一部《三十而已》火了太太们的包包鄙视链出圈了有人的地方就有江湖是的,程序员入圈是容易的不需要4万的LV,更不需要限量版的爱马仕只需要一件耐躁的格子衫然而,程序员的30岁,却说不出”而已”二字01入圈篇你都3 0岁了,不会连一件像样的衣服都没有吧?格子衫会不会穿?你都30岁了,不会还只会PHP吧?2 1天精通xxx, 会不会?你都30岁了,不会还只有一个机械键盘吧?复制粘贴不会,现在会了吧?编译老是出错?只要你足够大力,编译器就不敢警告你!02生存篇

2020-08-01 15:24:41 592

原创 C语言必学的12个排序算法:冒泡排序(第4篇)

基本思想冒泡排序(Bubble Sort),是一类“交换”类排序方法,类似水中冒泡,最大的数据会沉到水底,较小的数会浮上来。很简单,以从小到大排序为例,每一趟排序将“逆序”(前一个元素比后一个元素大)相邻两个数据元素交换,这样就会将最大的元素交换到“最后”的位置,冒泡排序每趟子排序过程都会将当前“最大”元素交换到最后位置,较小的元素会渐渐排到前面。冒泡排序时间复杂度是O(n^2),是稳定的排序,当初始序列为从小到大有序时,仅需要进行n-1次关键字比较,不需要移动任何记录,即可完成排序过程;当初始序列从大

2020-07-31 21:54:53 256

原创 C语言必学的12个排序算法:希尔排序(第3篇)

基本思想希尔排序(Shell’s Sort),以发明人命名,又称为缩小增量排序,也是一种插入排序算法。主要思想:直接插入排序算法时间和待排数据有关,其平均复杂度是O(n^2),但是在待排数据已经有序的情况下,其复杂度可以达到O(n),因为不需要移动数据。希尔排序就是利用这种特点,先将整个待排数据记录分割成若干个子待排数据记录,然后分别进行直接插入排序,当整个待排数据记录“基本有序”时,再对整个数据记录进行完整的一次直接插入排序。通俗地来说,先“跳着”给待排序列排序几个数据,让待排数据基本有序的情况,再

2020-07-31 21:50:47 327

原创 C语言必学的12个排序算法:折半插入排序(第2篇)

基本思想直接插入排序实现简单,但是对于待排数据量较大时,时间性能差,因此可以对其改进。改进排序算法性能,无外乎从减少“比较”和“移动”操作次数,折半插入排序是其中一种改进,插入排序需要在有序子表查找合适的位置,此时可以使用折半查找的方式实现,减少比较次数。折半查找,举例来说明:对于9个数据的有序数据表:(1,2,3,4,6,7,8,9,10),给定一个数据5,如何查找合适的位置插入,保持数据表有序。1.首先有序表长折半9/2=4,可以和第4个数据4比较,发现5大,因此5的位置肯定在有序表后一半(6

2020-07-31 21:43:31 300

原创 C语言必学的12个排序算法:直接插入排序(第1篇)

为什么学习排序算法排序和查找是计算机专业课程数据结构和算法中最重要的部分之一,也是编程中常用的基础知识。C语言初学者对直接插入、简单选择两种最简单的排序算法必须掌握,足以应付一般的考试、课程设计、小程序编写。但是对于计算机专业、编程开发的同学,必须熟练掌握这12个算法,达到手写算法的程序,排序算法在算法能力训练、考研笔试和机试、工作面试、真实软件项目中普遍使用。C语言必须的12个排序算法文章系列,每篇文章介绍一个算法,使用C语言实现一个排序算法,这些代码可以作为模板代码,大家可以收藏,方便编程使用。

2020-07-31 21:37:06 580

原创 C++中是如何调用C接口的?

前言如何在C++代码中调用写好的C接口?你可能会奇怪,C++不是兼容C吗?直接调用不就可以了?这里我们先按下不表,先看看C++如何调用C代码接口。C++如何调用C接口为什么会有这样的情况呢?想象一下,有些接口是用C实现的,并提供了库,那么C++中该如何使用呢?我们先不做任何区别对待,看看普通情况下会发生什么意想不到的事情。首先提供一个C接口://来源:公众号【C语言PLUS】//test.c#include"test.h"void testCfun(){ printf("I am

2020-07-31 21:28:22 550

原创 轻松学做C语言课程设计:学生成绩管理系统-链表实现

题外话C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。备注:1.不同C编译器,对C语言程序编译有差别,建议大家选择相同的编译器。2.代码手机不方便看,可以收藏使用电脑查看,注意各种标点符号。功能要求学生成绩管理系统常用功能一般包括:1.学生信息包括学号、姓名、4门课成绩(语文、数学、英语、专业课),成绩百分制整数;2.学生信息以文件形式保存;3.可以显示所有学生信

2020-07-30 19:28:41 2608 2

原创 一篇文带你了解程序员的生存环境到底有多难!

世界上大部分软件公司都是面向业务开发模式而且长期不会变,也合理。因为存在这样的需求。业界不是学界,业界没有义务按照科研的机制来运作。业界的主要目的是满足企业个人的IT需求。科技企业最大的问题,是“面向业务的开发”很多企业业务最终面对的是个人用户,而且把精力和资源太多地放进了这些面向个人用户的业务中,即虚耗了企业运营的成本,也增加了企业潜在的风险。更健康的科技企业,应该是“面向解决问题的开发”,这里的问题,不仅仅是互联网的问题,不仅仅是民生问题,也包括了自然科学、共性基础科技难题、面向不同领域提供分析处

2020-07-30 16:44:27 719

原创 轻松学做C语言课程设计:图书管理系统-链表实现

题外话C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。题目要求图书管理系统提供图书信息管理以及借还管理。图书信息至少包括:图书编号、书名、价格、作者、借还状态,提供以下功能:1.增加图书信息,录入;2.查询已有的所有图书信息;3.删除图书;4.修改图书信息;5.借阅图书;6.归还图书;7.退出;实现要点该要求较为简单,可采

2020-07-29 16:36:06 921

原创 必须知道的C知识细节:常用的四种变量命名法

写C语言程序需要给函数、变量命名,也就是标识符,不同编程语言和不同程序,命名方式和规范各不相同,每种语言都有自己的习惯命名方法。截至目前,编程的命名方法主要有四种,这四种方法没有优劣之分,主要看个人爱好和编程规范要求,因此大家可以选择一种作为自己的风格。对于简单变量,可以使用单个字母或单个单词简写命名;对于复杂的变量和函数需要使用多个单词时,充分利用以下的命名法。变量命名其实对于计算机来说,可以是任意的,但是命名对于程序员来说,可以增加程序代码的可读性,因此十分重要。1.下划线命名法使用下划线分割多个

2020-07-29 16:09:51 1816

原创 轻松学做C语言课程设计:图书管理系统-数组实现

C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。题目要求图书管理系统提供图书信息管理以及借还管理。图书信息至少包括:图书编号、书名、价格、作者、借还状态,提供以下功能:1.增加图书信息,录入;2.查询已有的所有图书信息;3.删除图书;4.修改图书信息;5.借阅图书;6.归还图书;7.退出;实现要点该要求较为简单,可采用结构数

2020-07-28 21:06:08 3689

原创 必须知道的C语言知识细节:C程序编译后内存到底是如何布局

C语言程序编译以后,代码和数据都必须存放在内存中由CPU执行。理解C程序内存是如何划分布局,才能真正理解C语言中变量、存储类型、指针等底层知识点。一个C语言程序编译后,可执行文件中运行时内存空间按照以下规律进行连续划分布局。以下各区域内存地址按照从小地址到大地址空间排列。1.文本段也称为代码区,存放C程序编译的二进制指令代码,例如定义的各种函数体内的代码翻译成CPU指令后存放在该区域。2.数据段存放经过初始化的全局变量和静态变量的值。C语言中初始化的全局变量和静态变量内存分配在这个区段,初值也保存

2020-07-28 15:46:22 611

原创 必须知道的C语言知识细节:函数形参和实参的区别

当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua BlochC语言中函数形参和实参是十分重要的概念,初学者很容易混淆。形参:顾名思义,形式参数,仅仅是声明了参数的类型和参数名称,未实际分配内存和赋值。实参:实际参数,是指函数调用时,实际赋值和分配内存空间。例如:int sum(int a, int b){ return a+b;}int main(void){ int c=1; sum(c,2); return 0;}很明显,函

2020-07-28 15:34:48 5965

原创 容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什么输入类型吗?

C语言其实功能很强大,有不少细节的功能很有用。今天分享下C语言输入函数scanf函数中 %[] 格式控制符号的作用。C语言输入和输出函数使用格式占位符%作为格式控制,所谓的占位符就是在输入输出的内容中预留位置填充等待输入输出的内容,出现格式占位符%的地方表明有输入和输出。常见的格式控制有:%d 整数%f 单精度浮点数%lf 双精度浮点数%c 字符%p 指针值%s 字符串%u 无符号整数%% 百分号当然除了以上常用的,还有今天介绍的 %[]。%[] 格式控制类型,本质上也

2020-07-27 19:32:14 763

原创 你见过“最美”的C语言代码是什么?

我们都知道雷军雷布斯说过当时他写的代码像诗一样优美,那已经是三十年前的汇编时代了,那么现在你有见到过最美的c语言代码吗?我在网上收集了一些代码,供大家赏诗,其中我本人最喜欢最后一个。这是我找到最多的答案,估计是程序员想自黑还是说这个带大家步入了代码的世界。#include<stdio.h> int main(void) {   printf("Hello,World");   return

2020-07-27 16:54:15 2206

原创 必须知道的C语言知识细节:函数声明与定义的参数名称可以不一样吗?

函数声明和定义一般都有参数,C语言中函数声明关注的是函数返回值类型、函数名称、函数参数类型,其中函数参数名称并不关注,因此参数名称可以在声明时省略,在定义时取任意名称。注意:声明和定义是有区别的,具体可以参见前面文章。[必须知道的C语言知识细节:声明和定义]以下三种方式声明和定义函数都是正确的。第一种:常用的,声明和定义函数参数名称均一致。int add(int a, int b);   // 函数声明int add(int a, int b)    /

2020-07-25 21:40:04 8539 2

原创 必须知道的C语言知识细节:三类函数使用区别

C语言函数有三类,分为外部函数、静态函数、内联函数,其中前两种是C89标准支持,第三种是C99标准增加的。外部函数这类函数是默认的函数类型,基本上平时我们使用的就是这种函数,声明有以下两种方式,例如:// 使用extern关键字,显示声明extern int add(int a, int b);// 或省略关键字extern,编译器也会自动认为是externint add(int a, int b);外部函数表明在当前声明和定义的代码文件中可以使用,也可以在其它代码文件中可以通过#includ

2020-07-25 21:10:37 993

空空如也

空空如也

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

TA关注的人

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