![](https://img-blog.csdnimg.cn/aca82703275b4bfdaffae7f019763a1b.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言
文章平均质量分 93
主要适合刚接触编程,对编程有浓厚的兴趣但是不怎么了解编程的小伙伴,带你从零开始学习C语言。
初阳hacker
致力于成为学习狂魔的人,努力成为更厉害的程序员
展开
-
贪吃蛇游戏
vs的控制终端要换成vs的控制台。Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外,它同时也是⼀个很⼤的服务中⼼WIN32 API也就是Microsoft Windows 32位平台的应⽤程序编程接⼝。原创 2024-06-11 15:25:03 · 784 阅读 · 0 评论 -
(提升篇)函数栈帧的创建和销毁
详细了解函数在内存中是怎么开辟空间的以及函数是怎么别调用的。带你走进汇编代码的世界。原创 2023-06-19 13:59:11 · 337 阅读 · 48 评论 -
详解C语言预处理
我们在实现一个程序的时候肯定不止写一个源文件的,而是写很多个单独源文件,最后将每一个源文件一一的链接起来,而我们的每个源文件都会单独的经过编译器处理生成单独的目标文件(.obj),而我们的每个目标文件都经过连接器加上链接库处理将所有的目标文件链接起来形成我们的可执行文件。原创 2023-03-22 23:40:55 · 343 阅读 · 6 评论 -
C语言文件操作
各种文件操作函数详解,文件的类型,文件怎么于终端产生联系。原创 2023-06-09 22:14:01 · 893 阅读 · 40 评论 -
通讯录动态版改造
本次展示是基于上期代码让你迷上动态内存的用法及管理的基础上进行修改的,上一期分享的通讯录设计其实还存在很多的不足之处。其一就是我们的成员人数是固定的1000个,但是如果我们要给用户使用的话我们并不知道用户需要多少个成员,如果要的个数大于1000了那么空间就不够了,如果要的个数小于1000那多出来的空间就浪费掉了。其二就是我们修改成员的时候,如果我们只要修改成员里面的一个信息而不是都修改那其实我们并不要将每个信息都查找一遍,而是单单找到成员信息里面的一个信息进行修改就行了。原创 2023-03-10 10:45:50 · 249 阅读 · 4 评论 -
让你迷上动态内存的用法及管理
1:头文件 include2:功能:在堆区开辟(申请)一块连续可用大小为size的空间,并返回指向这块空间的指针。3:注意事项:(1):如果开辟成功,则返回开辟好的空间的指针。(2):如果开辟失败,则返回一个NULL,因此malloc的返回值要进行检查。(3):返回类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候由自己来决定。(4):如果参数size=0,malloc的行为是标准未定义的,取决于编译器。原创 2023-03-08 22:36:21 · 709 阅读 · 2 评论 -
带你一步一步实现通讯录的设计
本次通讯录的实现主要涉及的知识点是:结构体,枚举,函数设计等知识点,其中结构体和枚举是本次的主要知识点,可以这么说本章节是对前两期博客的一个知识总结(C语言结构体讲解和枚举类型的使用),也可以说是将知识运用到实际生活当中,好了长话短说,我们进入今天的主题。在实现一个通讯录的时候,我们都要先构思出它的框架,它的成员信息有什么,以及这个通讯录要实现的功能是什么,等等。我们知道一个人的基本信息包括:名字,年龄,性别,电话,住址。原创 2023-02-28 23:06:44 · 1232 阅读 · 4 评论 -
枚举类型的使用
所谓枚举就是一一列举的意思,像我们生活中的列举出星期,月份一样。它是由用户在程序中自行定义的。枚举是个类型,可以通过类型常见变量,而枚举创建这个变量的可能取值就在大括号里面,枚举的应用场景一般是把可以一一列举出来的定义成枚举类型,然后创建枚举类型的变量。enum 枚举成员注意:这里同样在最后不能丢掉了分号。enum Ses {在上面我们定义了一个枚举类型Ses,而打括号里面的就是枚举的可能取值。所以我们在给其赋值的时候只能赋值所给的可能取值。就比如。原创 2023-02-27 23:05:01 · 774 阅读 · 3 评论 -
C语言结构体讲解
在上面我们结构体定义(结构体的声明)只是告诉编译器我们要表示的数据,但是并没有让内存开辟空间,就相当于你要造房子,但是你现在只是把图纸给了工人,并没有告诉工人在哪里做房子。这个时候如果想要使用结构体,就必须创建变量,也就是结构体变量。这里可以类比 int num;这里的类型是int,变量名是 num 而结构体的类型是struct student,这里就可以创建一个变量stu了。原创 2023-02-19 14:51:18 · 729 阅读 · 0 评论 -
(简化版)字符串函数模拟实现
讲解多种字符串函数的模拟实现,strlen,strcpy,strcat,strcmp,strncpy,strncat,strncmp,strstr,memcpy,memmove,memset,memcmp原创 2023-02-25 16:58:19 · 133 阅读 · 2 评论 -
详解字符串函数的使用
讲解各种字符串函数,strlen,strcpy,strcat,strcmp,strncpy,strncat,strncmp,strstr,strtok,strerror,memcpy,memmove,memset,memcmp原创 2023-02-12 17:59:27 · 542 阅读 · 5 评论 -
隐藏在背后的真相——数据(整形和浮点型)存储的方式
char //字符数据类型 1个字节short //短整型 2个字节int //整形 4个字节long //长整型 4/8个字节long long //更长的整形 8个字节float //单精度浮点数 4个字节double //双精度浮点数 8个字节C语言只规定了sizeof(long)>=sizeof(int),但是具体long取几个字节看编译器。大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端。原创 2023-05-27 19:16:00 · 809 阅读 · 8 评论 -
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
谈到bug,我们知道bug的中文意思是虫子,飞蛾的意思。至于为什么bug一词会用到计算机领域的话得追溯到第一台计算机的诞生。上面个你看到的就是世界上第一个bug的诞生。它的来源也是非常的有意思,当时世界上的第一台计算机出了故障不能正常的工作,于是工作人员就进入计算机内部检查(当时的计算机非常的大,达到人可以进去),这个时候发现计算机的一个晶体管内有个飞蛾死在了里面于是把飞蛾清理干净,换了零件之后,计算机就可以正常的工作了。原创 2023-05-20 20:59:43 · 1903 阅读 · 24 评论 -
指针面试真题讲解
玩转指针笔试题,详细到发丝原创 2023-01-19 22:22:50 · 190 阅读 · 12 评论 -
详解之进阶指针
现在我们要一个数组,存放的是函数指针的地址,那我们直接再int ( * p)(int,int)上面动手脚,既然我们 要得到一个数组,那我们就在p后面加上[ ],即int ( * p[ ])(int,int),[ ]的优先级比 * 高,所以p先和[ ]结合成一个数组,这个时候去掉p[ ],剩下的就是p的类型,这里,把数组的地址赋值给p,p解引用操作就拿到了数组的地址,数组的地址是从首元素地址开始的,也就相当于拿到了数组的首元素地址,*p+i 就是拿到数组每个元素的地址最后进行解引用操作,就拿到了每个元素。原创 2023-01-16 20:26:31 · 140 阅读 · 8 评论 -
详解之初识指针
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to) 存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变脸单元,可以说,地址指向该变量单元。 因此将地址形象化的称为"指针"。意思是通过它能找到以它为地址的内存单元。 简单点说:内存是一块大大的空间,为了很好的使用内存,把内存划分成一个个小格子,在给每个格子编个号,就像生活当中 旅馆当中每个房间都用个编号一样,这个时候,再加上旅馆的街道房间编号,这个时候就组成了地址。 你也可以对比地原创 2023-01-13 15:25:37 · 933 阅读 · 8 评论 -
【C语言】操作符详解(下)
exp1 ? exp2 : (冒号,不是分号)exp3(exp是表达式。)这个意思就是如果表达式1(exp1)为真则执行exp2,如果是假则执行表达式3(exp3)原创 2023-05-13 21:28:54 · 692 阅读 · 12 评论 -
【C语言】操作符详解(上)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0——反码(-1得到反码)就得不到我们想要的结果。而1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1则是1原创 2023-05-12 18:04:49 · 675 阅读 · 3 评论 -
【C语言】扫雷游戏
一步一步教你实现扫雷的设计,详细讲解递归实现扫雷展开。原创 2023-05-10 17:12:49 · 1832 阅读 · 10 评论 -
【C语言】都玩过三子棋游戏把,但你知道怎么用C语言实现三子棋游戏吗?让我来手把手教你。
在写三子棋这个程序的时候我们不妨会用到很多的函数,我们之前也讲过了,当我们在设计一个比较复杂的程序的时候或者需要很多函数链接成的一个程序的时候,我们都会使用多个文件来编写,而每个文件的功能都是不一样的。以我们写的这个程序为例子。text.c文件是我们的测试文件。game.c文件是我们的函数实现文件。game.h文件是我们的函数声明文件。原创 2023-05-08 12:47:17 · 432 阅读 · 6 评论 -
【C语言】数组讲解
熟练知晓一维数组,二维数组,以及数组名代表的意义。原创 2023-05-06 21:27:46 · 472 阅读 · 16 评论 -
【C语言】函数讲解(下)
告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。函数的声明一般出现在函数的使用之前。要满足先声明后使用。函数的声明一般要放在头文件中的(以.h结尾的文件)。函数的定义是指函数的具体实现,交待函数的功能实现。而函数的定义一般放在以.h 为后缀的文件中的。而这里其实重点在于为什么要把函数的声明和定义都写在不同的地方呢?其实这种写法一般都只出现在一些大型的程序开发中出现的。原创 2023-04-27 18:05:13 · 778 阅读 · 10 评论 -
【C语言】函数讲解(上)
如果库函数能干所有的事情,那还要程序员干什么?所以更加重要的是自定义函数。自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。函数的组成statement;//语句项 } ret_type 返回类型fun_name 函数名para1 函数参数# include //get_max函数的设计 int get_max(int x , int y) {return 0;原创 2023-04-22 18:47:12 · 601 阅读 · 36 评论 -
来使用分支语句和循环语句实现一个小游戏吧(猜数字游戏)
有了菜单我们就可以进行选择,二我们想玩玩一把再玩一把,这个时候就可以用到我们学的循环语句,这个我们选择do……因为如果只有rand的话你可以理解为他只会生成一遍的随机数,生成后就不会改变了,以后你在输出随机数的时候都是一样的,二我们srand是一个重置的过程,这样他们两个配合起来就可以生成不一样的随机数了。而现在我们想要的到0-100的数的话只要rand()%100就能得到0-99的数在+1就可以得到1-100的数了也就是:rand()%100+1。头文件#include原创 2023-04-20 16:35:08 · 514 阅读 · 0 评论 -
【C语言】分支语句和循环语句(下)
可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹;for循环使用的频率也最高。原创 2023-04-18 01:41:45 · 224 阅读 · 1 评论 -
【C语言】分支语句和循环语句(上)
我们说C语言是结构体的程序设计语言。顺序结构选择结构循环结构而今天我们要讲的就是选择语句和循环语句。表达式语句函数调用语句控制语句复合语句空语句本章后面介绍的是控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:条件判断语句也叫分支语句:if语句、switch语句;循环执行语句:do while语句、while语句、for语句;原创 2023-04-17 15:15:00 · 661 阅读 · 5 评论 -
初步了解C语言(下)
上面就是#define定义产量,我们打印a和MAX得到的结果是一样的,其实#define定义常量就是一个替换的结果,这里就是说用MAX替换1000,所以打印的结果是一样的。#define定义宏也是一样的,也是一个替换的结果。这里int sum=ADD(2,3)==((2)+(3)) 就是这样的一个替换。原创 2023-04-13 00:17:50 · 231 阅读 · 3 评论 -
初步了解C语言(中)
数组的语法形式:类型 数组名[数组大小]={初始值};//定义一个整形数组,最多放10个元素。原创 2023-04-09 14:21:16 · 380 阅读 · 4 评论 -
初步了解C语言(上)
第一:先对整个知识点有个大概的了解可以帮助我们合理的安排我们的学习时间,更好的给自己规划好学习任务。第二:在我们了解大概的知识的时候我们可以发现那块知识点比较难,那块知识点比较重要,我们就可以对症下药着重的深究比较重要的知识点,并且在学到那快知识点的时候自身的注意了也会得到提高有助于我们之后的学习。第三:在了解整个C语言的知识点的时候,在我们的脑子里可以形成一张知识网图,也就是我们所说的思维导图,这个样不仅可以帮助我们对知识点的巩固,还可以帮助我们理清思路,帮助我们之后的学习。原创 2023-04-07 19:44:18 · 190 阅读 · 4 评论 -
学习C语言从创建一个文件开始
当然是创建一个空项目,在空项目里面编写我们的代码,所以要想成为一名好的程序员,首先就是要学会灵活的运用我们的编写工具。这个源文件的存放路径不需要改,它默认是存放在我们创建好的空形目里面的。要注意的是如果我们写的是C我们的文件后缀名一定要是**.c**的如果写的是C++我们的后缀名一定要是.如果我们要创建一个头文件的话步骤是一样的,只是我们的文件后缀名要改成**.h**。有时后我们上面的解决资源管理器不小心被我们叉掉了怎么办,也是很简单的。这里建议我们自己单独创建一个文件夹来存放我们编写的代码。原创 2023-04-06 15:01:50 · 1478 阅读 · 1 评论