c语言入门
文章平均质量分 52
彭泽布衣
关注云计算、编程语言、计算机操作系统、网络、性能等方面的技术,期待思想的交流和碰撞!
展开
-
数组初始化(指定下标初始化)
在C语言中,在C99标准之后,就可以使用指定初始化器(designated initializers)来初始化数组或结构体中特定的元素。指定初始化器在初始化数组时允许显式地指定一个或多个索引及其相应的值,对于未显式初始化的元素,将默认为零。一般通用做法还是使用枚举类型或者宏定义类型作为下标,可以提高代码的可读性,也方便于管理复杂的初始化场景。需要注意的是,这个特性是 C99 以及其后的标准特性。具体应用场景就是每个数组下标有具体的含义。原创 2024-03-04 22:30:59 · 452 阅读 · 0 评论 -
戏说c语言: 阶段性总结二
经过几番努力,终于完成了一个初版的学生成绩管理系统。这个只是一个系统初版模型,还有很多提高和优化的地方。但是这个系统,基本上将学习到的最基本的c的知识应用其中。现在我们来回顾总结一下。有人说指针是c语言中最难学习的部分,要说指针难吧,也难,要说不难,也不难,正如彭端淑所说:“天下事,难易乎,为之,则难者亦易矣。”就看你有没有去学习的心态。原创 2024-02-28 23:46:47 · 547 阅读 · 0 评论 -
戏说c第二十六篇: 测试完备性衡量(代码覆盖率)
师弟:“师兄,我又被鄙视了。说我的系统太差,测试不过关。我:“怎么说?师弟:“每次发布版本给程夏,都被她发现一些bug,太丢人了。师兄,有什么方法来衡量测试的程度么?我:“有,代码覆盖率就是一个比较好的方式。原创 2024-02-28 00:45:11 · 615 阅读 · 0 评论 -
c入门第二十五篇: 学生成绩管理系统优化(多线程)
程夏:“你这个系统不好用啊?连上之后没有反应,是不是挂了?师弟:“不应该啊,我这边好好的,可以正常操作的。程夏:“我这边有问题,大概率还是你系统问题。你再测试一下吧。师弟:“额,基本的功能我都测试过了的。程夏:“多客户端请求呢?一些边界场景、一些异常场景都有测试么?师弟瞬时陷入沉思,难道是多客户端操作存在问题。师弟紧急复现了一下这个问题,发现服务端,最多处理一个客户端的请求,其他请求阻塞住了。如何支持多客户端的请求呢?原创 2024-02-27 22:36:19 · 364 阅读 · 0 评论 -
戏说c语言文章汇总
戏说c语言,如何通过大门,看见c门内的世界?这里将介绍一些c语言的知识和概念。原创 2024-02-27 15:13:47 · 788 阅读 · 1 评论 -
c入门第二十四篇: 学生成绩管理系统优化(可执行文件传参)
我:“师弟,review完你的代码之后,你觉得有没有什么地方可以优化?”师弟一脸懵。我:“比如,你把客户端和服务端的可执行文件生成之后,我把服务端部署到我的测试机器上,客户端部署在另一台机器上,这样可行么?”师弟:“师兄你这么说,那就是不可行了?”我:“为什么不可行呢?”师弟:“我先测试一下。”十几分钟过后,师弟过来说,“的确不行,每次服务端的部署位置改变,客户端就出现连不上服务端的情况,主要是因为客户端中的server ip是固定的。除非重新修改客户端代码中的ip。”我:“如果每次更换部署的原创 2024-02-26 23:43:00 · 464 阅读 · 0 评论 -
c入门第二十三篇: 学生成绩管理系统优化(支持远程操作)
师弟高兴的说道:“师兄,你猜我今天上课看见谁了?我:“谁呢?师弟:“程夏,没想到,她竟然来旁听我们计算机系的课程了。虽然我从前门进去的,但是我还是一眼就看见了坐在后面的她。我:“有意思,你没过去打个招呼?师弟:“我正要挨过去坐着,被占位的室友拉住了,就不好意思了。还好第一节课间休息的时候,我果断溜了过去。师弟开始回想当时的场景,嘴角先是上扬,接着又下扬。当时她在忙着看书,等我在她旁边坐下,稍微撇过头看她看什么书的时候,她才发现的我。原创 2024-02-26 22:38:22 · 461 阅读 · 0 评论 -
c入门第二十二篇: 学生成绩管理系统查询优化(二分查找)
师弟: “经过几轮优化之后,我的学生成绩管理系统,感觉已经非常不错了,是我学习以来做的最好的系统了。没想到,还是被嘲笑了。我:“怎么被嘲笑了?师弟:“程夏她说: 你在录入学生的时候,id是增序录入的,在查询的时候,就不能高效一点查询,不去遍历整个数据?我:“确定这个女生不是我们计算机系的?师弟:“的确不是我们计算机系的呢。我:“那人家学习的速度和你相比,像是龟兔赛跑呀。看师弟有点难受,我:“干嘛这么惆怅,谁笑的开心还不一定呢。在讲二分查找之前,讲个故事吧。”原创 2024-02-24 02:06:37 · 987 阅读 · 0 评论 -
c入门第二十一篇: 学生成绩管理系统之成绩排序
在学生成绩管理系统中,必然面临着排序的问题。这里我们简单的将之前讲过的冒泡排序应用于我们的学生成绩管理系统中。是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个项,如果相邻不是预期的顺序时交换它们,最终达到我们目标的顺序。原创 2024-02-24 01:32:06 · 563 阅读 · 0 评论 -
c入门第二十篇: 学生成绩管理系统优化(指针入门之动态内存管理,如何支持更多的学生?)
前面提到了数组最大的问题,就是不支持动态的扩缩容,它是静态内存分配的,一旦分配完成,其容量是固定的。为了支持学生的动态增长,才引入链表。其实除了链表,还有一种解决该问题的方式,就是动态数组——动态申请内存的数组。原创 2024-02-23 01:17:39 · 389 阅读 · 1 评论 -
c入门第十九篇: 易错的指针操作(代码的调试)
前面讲述到了链表的操作,链表具有动态伸缩的优点,但是链表是指针操作,必然面临着指针操作的诸多问题,比如典型的空指针操作问题,出现问题之后,除了printf,还有没有其他方法调试呢?当然就是gdb。原创 2024-02-18 03:31:32 · 408 阅读 · 0 评论 -
c入门第十八篇: 学生成绩管理系统优化(支持学生数的动态增长——链表,指针的典型应用)
链表相较于数组,它有灵活的扩展的优势,但是它的内存不是连续的,访问性能比不上数组。虽然当前数组实现的查询,也是遍历数组,但是这里是可以进行排序优化查询的,但是链表不行。在高性能转发场景中,比如dpdk场景中,使用的还是数组。原创 2024-02-17 02:29:51 · 551 阅读 · 0 评论 -
C入门番外篇七: 金庸武侠中另一半的查找(如何快速查找?)
最近在学习文件操作,现在正好有一道编程题,从文件中读取金庸小说中男女一对的名字,初始化数据信息(伪AI学习阶段),然后输入男或女的名字,返回另一半的名字。如何实现?有没有O(1)的方法?原创 2024-02-17 00:40:05 · 353 阅读 · 0 评论 -
c入门第十七篇: 学生成绩管理系统优化(数据持久化,读写文件)
上一节说道师弟的学生成绩管理系统缺少数据持久化,关于数据持久化的方法基本都是落盘,将内存信息回写磁盘。回写磁盘的方式有很多种,典型的就是普通的文件操作,还有就是数据库操作。这里将重点使用普通的文件操作,来实现数据回写磁盘,以及从磁盘读取数据。原创 2024-02-17 00:06:18 · 560 阅读 · 1 评论 -
c入门第十六篇——学生成绩管理系统
师弟实现的学生成绩管理系统功能包括:添加学生信息、显示所有学生信息、按学号查找学生信息、按姓名查找学生信息、添加学生成绩、修改学生成绩、显示学生的平均成绩、退出系统。原创 2024-02-14 22:43:07 · 1260 阅读 · 0 评论 -
c入门番外篇——我们用密码交流怎么样?
最近看到一个关于华罗庚先生的小故事。一九二九年,苏家驹先生在上海《学艺》七卷上发表了《代数式的五次方程之解法》,华罗庚先生发现此文在一个十二阶段的行列式中有计算差错,便写出《苏家驹之代数解法不能成立的理由》的论文,于一九三O年发表于上海《科学》杂志,论文引起了清华大学熊庆来教授的重视,得意后续进入清华。那一年他才20岁,因为家境贫寒,从高中辍学多年。原创 2024-02-14 11:22:00 · 482 阅读 · 0 评论 -
c入门第十五篇——学而时习之(阶段性总结)
黄蓉心中暗笑:“好啊,又是一对!没几日之前,两兄弟为了芙儿拚命,兄弟之情也不顾了,这时另行见到了美貌姑娘,一转眼便把从前之事忘得干干净净。”突然间想到郭靖,心下不禁自傲,靖哥哥对自己一片真心,当真富贵不夺,艰险不负,眼前的少年人有谁能比得上?跟着又想到了杨过,觉得他和小龙女的情爱身份不称,伦常有乖,然而这份生死不渝的坚贞,却也令人可敬可佩,两个徒儿万万不如。原创 2024-02-14 00:20:44 · 593 阅读 · 0 评论 -
c入门第十四篇——一个学生的信息(结构体)
我:“师弟,怎么又开始发呆呢?师弟:“师兄,上次不是程夏出了一道题么?让我实现记录班上学生的成绩,并对学生成绩排序。我实现了,但是她说不对,排序后,需要带上学生的详细信息,比如学号、名字、性别、成绩等信息。我在想c语言中,有没有什么可以实现类似的变量?我:“结构体变量就可以。”原创 2024-02-13 23:33:11 · 408 阅读 · 0 评论 -
c入门第十三篇——字符数组放不下一个女生的名字
师弟:“师兄,我最近在学习字符串的操作,遇到一个奇怪的现象,你帮我看看。我:“好啊,你描述一下现象呢?师弟:“我给一个字符串赋值,结果影响了另外一个整型的数值。程序简化如下。我:“你这是字符串溢出了。师弟:“溢出了?我定义的数组大小为8,赋值的字符串长度也为8,怎么会溢出呢?我:“在C语言中,字符串以空字符 ‘\0’ 结尾,所以它尾部还有一个隐形的字符。Linux系统可以通过man strcpy来看一下函数帮助,帮助中说明了会一并将’\0’进行拷贝,故溢出了。原创 2024-02-13 00:30:01 · 378 阅读 · 0 评论 -
c入门第十二篇——成绩差的往前坐(简单排序)
书接前文,师弟说道他喜欢的一个女生,让他实现一个算法,对班上的学生成绩进行排序。排序,这不是一件很简单的事情么?为什么这么说呢?因为她并没有对时间复杂度有要求。如果对时间复杂度,有要求,那就要用更高深一点的算法了。现在我们可以用最简单的2种排序算法。原创 2024-02-12 15:00:59 · 373 阅读 · 0 评论 -
C入门番外篇——师兄的不耻下问(2024是个闰年)
我:“师兄,新年快乐!”师兄:“新年有点不快乐!”我:“师兄这是怎么了?”师兄说:“收到一封信,正好你帮我参谋参谋怎么回信。”我:“师兄,你这是不耻下问么?”师兄说:“别贫嘴,帮看看。”原创 2024-02-12 14:36:55 · 1236 阅读 · 0 评论 -
C入门番外篇——吾欲之南海,何如?(二维数组)
蜀之鄙有二僧:其一贫,其一富。贫者语于富者曰:“吾欲之南海,何如?”富者曰:“子何恃而往?”曰:“吾一瓶一钵足矣。”富者曰:“吾数年来欲买舟而下,犹未能也。子何恃而往!”越明年,贫者自南海还,以告富者,富者有惭色。原创 2024-02-10 23:22:34 · 373 阅读 · 0 评论 -
c入门第十一篇——物以类聚(数组)
我:“师弟,看你在发呆,怎么了?师弟:“师兄,我喜欢的那个女生给我出了一道题。题目是输入班上学生的成绩,并对学生成绩排序,我在想怎么做。我:“哦?这个女生有意思。你觉得难点是什么呢?师弟:“我觉得有2个地方需要解决,一个是成绩的存储,另一个是成绩的排序。”原创 2024-02-08 22:14:13 · 1076 阅读 · 0 评论 -
c入门第十篇——指针入门
一句话来说: 指针就是存储了内存地址值的变量。在前面讨论传值和传址的时候,我们就已经开始使用了指针来传递地址。在正式介绍指针之前,我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道,每个房子都有自己的地址,叫内存地址。在大多数计算机使用 8 位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。原创 2024-02-08 22:09:09 · 556 阅读 · 0 评论 -
C入门番外篇: 谁是实验室划水之王?
临近春节,大家都很闲,这天晚上我看师弟在认真的刷视频。我:“师弟,给你个小的任务呀?师弟兴奋道:“师兄,啥任务呀?我:“这里有一份今天我们实验室每个人上网时长的数据,你要不要分析一下,谁的上网时间最长呀?师弟笑了:“好啊,不会最后是我吧。”原创 2024-02-07 19:22:24 · 390 阅读 · 0 评论 -
c语言常见编程问题
c编程问题汇总原创 2023-05-30 15:15:19 · 45 阅读 · 1 评论 -
C入门番外篇——辛苦写的代码丢了
这天师弟很忧伤的跑过来和我说到:“师兄,我一个rm操作,把我最近写的代码全删除了,有点难受。我说道:“你有听过一个曲突徙薪的故事么?师弟摇了摇头。我说道:“它讲述的是有一人家炉灶的出烟口是直的,旁边还堆积着很多柴草。有人劝主人把出烟口改弯,把柴草搬走,以免引起火灾。主人觉得没啥事,不久,家中果然失火。事情需要做好提前防护的工作。原创 2024-02-06 23:52:39 · 411 阅读 · 0 评论 -
C语言的起源
1972-1973年丹尼斯·里奇(Dennis Ritchie)开始设计C语言。取了BCPL的第二个字母作为这种语言的名字,也算上ALGOL、BCPL、B的一种延续。原创 2024-02-06 23:22:52 · 874 阅读 · 0 评论 -
c入门第九篇——为什么我还是之前的我?(传值与传址)
有一天师弟兴冲冲的跑过来和我说:“师兄,我发现c语言设计存在一个bug。我问到:“什么bug呢?师弟说道:“你看我这段程序,没有生效。我笑着说到:“难道没有可能是你写的代码有问题?师弟说:“不会,我检查了好几遍了,这么简单的代码应该不会有问题的。我说:“那好,我们就简单分析一下。”原创 2024-02-06 15:09:25 · 375 阅读 · 0 评论 -
C入门番外篇——C, Are you OK?
今日路上看到一个车牌,52U0K,感觉很有意思,如果做一下简单的翻译就是,“我爱你,好么?”这样让我脑子中闪现了这样的一个画面:“一个男生追一个女生,看到女生不怎么搭理自己的样子,然后问道:让我爱你,好不好?”问的低声,问的婉转,问的卑微。在自己喜欢的人面前,的确是紧张到自卑,感觉喜欢的人很美好,自己配不上的样子,只能低着身段去追求,难道这真的是一个好的状态么?原创 2024-02-06 11:56:54 · 1475 阅读 · 0 评论 -
GNU C和标准C
要理解GNU C和标准C的区别,我们需要先了解C语言的标准化过程以及GNU项目。标准C: C语言最初由Dennis Ritchie在1973年设计并实现。随着其流行度的增加,为了保证不同编译器之间的可移植性和一致性,国际标准化组织(ISO)发布了C语言的第一个官方标准,被称为“ANSI C”或“C89”,这是个统一的C语言版本。后来,ISO和ANSI共同发布了几个更新的标准:C99、C11、C18等。原创 2024-02-05 23:59:53 · 808 阅读 · 0 评论 -
c入门第八篇——如果上天可以给我再来一次的机会
至尊宝说:“曾经有一份真挚的爱情摆在我面前,但我没有珍惜,等到失去了我才后悔莫及,尘世间最痛苦的事莫过于此。如果上天可以给我再来一次的机会,我会对那个女孩说三个字:‘我爱你!’如果非要在这份爱前加一个期限的话,我希望是一万年。假如我们用程序来实现这段逻辑是怎么样的呢?原创 2024-02-04 12:49:30 · 346 阅读 · 0 评论 -
c入门第七篇——九九乘法表(双循环的实现)
一天早上,我说:“师弟,上次发了心心之后,你和你喜欢的女生怎么样了?她有没有接受你的心心啊?师弟说:“当时发完她挺开心的,还一起散了好多次步,吃了好几顿饭,但是最近两天,又不知道怎么了,爱搭不理的。哎,真不知道女生怎么想的,如果女生的想法像写hello world这样简单就好了。我说:“师弟,加油啊!过了许久,师弟端着电脑高兴地跑过来说:“师兄,你说你当年写九九乘法表,想了很长时间。你看我才花了几分钟就打印出了九九乘法表。”原创 2024-02-04 00:56:47 · 392 阅读 · 0 评论 -
c入门第六篇——循环(西西弗斯推石头)
在希腊神话中有个一个叫西西弗斯的人,他被惩罚每天把一块巨石推上山顶,而由于那巨石太重了,每每未上山顶就又滚下山去,前功尽弃,于是他就不断重复、永无止境地做这件事。这个在c语言中叫死循环,如何来实现这个死循环呢?在C语言中,循环就是重复执行一段代码的一种的控制结构,允许你在满足特定条件的情况下,重复执行一段代码,通过条件设置来控制重复执行的次数。C语言提供了三种类型的循环结构:for循环、while循环和do-while循环。原创 2024-02-04 00:03:12 · 368 阅读 · 0 评论 -
c入门第五篇——两个正数相加竟然变成了负数!
师弟突然惊慌的过来找我,说道:“师兄,加法器出bug了?我问:“咋啦?啥bug?师弟囧囧的说道:“两个正数相加变成了负数了。还是我喜欢的女生发现的,丢人了。我问:“你喜欢的女生,我们系的吗?师弟不无沮丧的说:“关键人家还是文科生。我说:“没关系,我们来分析看看问题。其实我大致猜到了原因。原创 2024-02-02 02:11:59 · 790 阅读 · 0 评论 -
c入门第四篇——简单的加法器
这一天和师弟吃饭,师弟问道:“师兄,c语言也学习了一下了,我在想我能够用c做点什么呢?是不是可以做个简单的计算器呢?”我赞许的说道:“不错,可以从简单的两个整数的加法开始。”师弟说:“在c语言里面怎么表示整数呢,以及怎么做加法呢?是不是还要支持整数的输入?”我笑道:“不错不错,想的很好。那就简单的科普一下c的基础知识。”原创 2024-02-02 00:46:05 · 1335 阅读 · 0 评论 -
c入门第三篇——当你运行./a.out时,发生了什么?
在给师弟讲述完可执行可执行文件之后,师弟追问道:“师兄,你说a.out是可执行文件,那这个可执行文件是怎么运行起来的呢,./a.out做了啥呢?我说道:“这是个好问题,开始寻根问底了,好事。师弟不好意思的笑了笑。原创 2024-02-01 22:59:08 · 422 阅读 · 0 评论 -
c入门第二篇——为什么需要编译?
上一节给师弟普及完c语言初级入门“hello c!”,师弟就回去吭哧吭哧练习起来了。刚没过多久,师弟又来问道:“师兄,为什么需要用gcc去编译hello.c生成a.out呢?直接运行hello.c不行么?我回答道:“打个不恰当的比方,这个好比米和酒的关系。酒精灯能够使用米来燃烧么?不行对吧。师弟若有所悟的样子。原创 2024-02-01 01:02:06 · 403 阅读 · 0 评论 -
c入门第一篇——hello c!
有一师弟问我:“师兄,我该怎么才能把c语言学好呢?怎么能够快速入门呢?怎么快速精通成为高手呢?你当时是怎么学习的呢?我楞了一下,回想当年自己学习c是一个什么样的过程?那时的自己写一个九九乘法表都研究了半天。我说道:“你有听过一个卖油翁的故事么?师弟摇头道:“没,它讲的是啥?我说道:“古代的铜钱中间的有个方孔,你能够将油倒过去,铜钱还不湿么?师弟摇头道:“这个应该挺难的。我说:“这个卖油翁就行。别人问他是怎么做到的?他说:无他,唯手熟尔(没有什么技巧,就是练习多了,很熟练)。师弟似乎有所觉悟。原创 2024-01-31 01:15:32 · 485 阅读 · 0 评论