c语言必备知识点
文章平均质量分 78
越深入C语言,越会感觉到编程的魅力,同时也是每一个程序员的内功修炼秘诀
稻草人敲代码
懒得写简介
展开
-
利用缓冲区模拟进度条加载
用来定义ProcBar函数,该函数就是实现进度条的主核心代码,用“#”表示进度,利用之前学过的缓冲区知识,使用\r回车符来不断覆盖之前的“进度”。main函数的定义,以及download函数的定义,download函数模拟了在网络中下载文件的情景。声明各种头文件,以及ProcBar函数的声明,为了提高代码的灵活性,使用一个回调函数作为调用模拟进度条函数的参数。以下就是进度条的样子咯,感兴趣的朋友可以自己去“美化”一下hh。界面呢非常简洁,代码也非常简单,非常适合有用来练手或者消遣。原创 2024-02-26 00:13:41 · 430 阅读 · 0 评论 -
详细讲解缓冲区
表示的是换行,可是,实际上这里的换行有两个动作:回车+换行。通过在内存中存储临时数据,程序可以利用缓冲区进行高效的读写操作,而不必每次都直接访问慢速的外部存储设备。缓冲区(Buffer)是计算机科学中常见的概念,它是一块内存区域,用于存储临时数据。,还没来得及从缓冲区输出到显示文件上,就执行sleep函数休眠了,这也是要等3秒才会打印出hello字符。这三个流其实就是三个文件的指针,可以实现基本的用户交互。例如,通过在网络通信中使用缓冲区,可以将大块的数据分割成小块,减少网络传输的延迟,提高效率。原创 2024-02-24 22:20:51 · 1005 阅读 · 1 评论 -
C语言内功修炼---指针详讲(初阶)
都说会用一门语言几个礼拜就可以了。这句话我不敢苟同,至少在我学习C语言指针之后就不这么觉得了。不信?//代码1//代码2这两行代码出自《C陷阱和缺陷》我相信大部分人在第一次看这俩行代码都是一脸懵逼。是不是头皮发麻?这是啥东西?如果你是这样,那么请收起你的骄傲,再也不要觉得C语言很“简单”,谦虚一点,好好学习!好了,其实无论你能否一眼看出来以上代码所表示的意思,我觉得都不应该轻视任何一门语言,编程世界,浩瀚无边,人外有天,天外有人。原创 2023-09-13 23:19:54 · 262 阅读 · 2 评论 -
c语言的程序环境和预处理(一眼丁真)
在编译阶段,将预处理生成的test.i文件进行处理,生成汇编代码并存放在test.s文件中,这个时候的代码还是不能直接让机器运行,还需要下一步操作。预定义符号含义__FILE__进行编译的源文件__LINE__文件当前的行号__DATE__文件被编译的日期__TIME__文件被编译的时间__STDC__如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。举例:其中__FILE__是当前编译源文件的路径 ,__LINE__表示的则是文件当前的行号。原创 2023-10-23 23:42:40 · 506 阅读 · 18 评论 -
c语言内功修炼--深度剖析数据的存储
char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统 一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程 是相同的,不需要额外的硬件电路。int a = 20;return 0;开始调试,查看变量a、b的内存。原创 2023-10-18 23:26:25 · 250 阅读 · 4 评论 -
c语言表达式求值--整型提升
C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。什么叫缺省整数类型?缺省在计算机里面是默认的意思。这句话大概意思就是,在c语言的整数运算中,如果有精度小于整型的非自定义类型数,就需要先转换为一个整数类型。比如char和short int类型,它们的字节数分别为1、2,如果它们参与整数表达式的运算就会先转换成整数类型,再参与运算。这里我们只谈论char和short int。原创 2023-10-13 22:17:52 · 717 阅读 · 5 评论 -
c语言终点站--文件操作
磁盘上的文件都是文件。在程序设计中,我们将文件分为两种:程序文件、数据文件(从文件功能角度来分类)。其中,stream 是要刷新的流的指针。如果 stream 为 NULL,则刷新所有流的缓冲区。文件操作的学习可以让我们持久化数据,同时也理解了文件数据是怎么输入输出的。有啥用呢?用处大多了,比如说我们在用c语言写一个程序的时候,我们就可以将程序中的数据存放在文件中,以便于我们下次打开程序还能读取到,这也就更加符合我们的实际需求。原创 2023-10-10 23:15:12 · 317 阅读 · 10 评论 -
c语言动态内存分布
学习动态内存是如何分配的可以让我们以后写出来的程序更加高效灵活,这也是我们作为程序员的基本素养,同时,我们也应该注意正确使用动态内存分配,避免一些常见的错误。原创 2023-10-08 22:18:43 · 1118 阅读 · 27 评论 -
c语言小课设--通讯录(动态内存管理+可持久化数据)
该项目实现一个通讯录功能,除了能根据具体需求扩大空间之外,也实现了最基本基本的增删查改等功能,并在退出通讯录时销毁创造的空间,从而不造成内存泄露。另外,这个项目由三部分组成,函数功能的实现在Contact.c源文件中,各种头文件、函数等声明则由文件Contact.h来实现,最后测试在源文件test.c文件中进行。原创 2023-10-01 17:14:42 · 440 阅读 · 3 评论 -
c语言结构体的内存对齐
结构体的内存对齐是拿空间来换取时间的做法。虽然根据内存对齐可能会开辟不必要的空间,但是为了保障读取数据的速度,拿空间换时间是值得的!其实,在设计结构体的时候,我们的目的是既要满足对齐,又要节省空间,这又如何做到呢?我们可以通过调整成员变量声明的顺序来减少结构体因为内存对齐的空间亏损。int i;char c2;char c2;int i;S1和S2类型的成员一模一样,但是S1和S2所占空间的大小有了一些区别。原创 2023-09-26 17:47:21 · 355 阅读 · 9 评论 -
c语言常见字符函数、内存函数(详讲)
其实在c语言当中是没有字符串这一概念的,不像c++里面有string类型用来存放字符串。在c语言中我们只能把字符串放在字符串常量以及字符数组中。原创 2023-09-25 19:31:38 · 261 阅读 · 2 评论 -
C语言内功修炼--指针详讲(进阶)
数组指针是指一个指针变量,它指向一个数组的首元素。在 C 语言中,数组名本身就是指向数组第一个元素的指针,因此可以将数组名赋值给一个指针变量,这个指针变量就可以称为数组指针。int(*p)[3];这就是一个指向整型数组的数组指针,p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为3个整型的数组。所以p是一个 指针,指向一个数组,叫数组指针。//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。二维数组传参,函数形参的设计只能省略第一个[]的数字。原创 2023-09-23 17:48:08 · 254 阅读 · 1 评论 -
深入理解函数调用--函数栈帧
寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。函数栈帧(Function Stack Frame)是在程序执行过程中,用来保存函数调用信息和局部变量的数据结构。它包含了函数的参数、返回地址和局部变量等信息。通俗的来说,就是在调用函数的时候系统给你开辟在栈区的一部分空间,专门用来存放局部变量等。原创 2023-09-05 17:47:03 · 204 阅读 · 4 评论 -
C语言如何生成随机数?
rand()rand()函数和srand()函数是C语言中用于生成伪随机数的两个标准库函数。rand()原创 2023-09-07 22:03:04 · 492 阅读 · 4 评论 -
vs2022如何进入反汇编窗口?
打开反汇编窗口只需两步原创 2023-09-04 10:15:32 · 3624 阅读 · 3 评论 -
c语言学完数组就可以完成的小游戏--三子棋
开始游戏,调用game()函数。game()函数实现的功能就是模拟玩家下棋以及电脑随机下棋的过程。到玩家下棋时需要判断输入坐标的合法性以及当前局面是否已经游戏结束。电脑下棋时,由于我这里只是随机下棋,就只需要借用rand()生成随机坐标再判断合法就行了。这里我们利用switch语句完成菜单功能的选择。输入1开始游戏,输入2退出游戏也就是退出循环,其他输入皆为非法。小游戏嘛,再简单也要有个菜单不是。原创 2023-09-05 22:46:18 · 85 阅读 · 2 评论 -
c语言中static关键字的作用
static关键字的作用是什么?原创 2023-08-27 14:11:00 · 1160 阅读 · 2 评论 -
c语言学完数组就能做的小游戏--扫雷
扫雷》是一款大众类的小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。扫雷的规则是在避开地雷的前提下标记所有地雷。棋盘大小:9x9雷的数量:默认5个(可以自己调)原创 2023-09-07 22:32:49 · 140 阅读 · 2 评论