
C语言
文章平均质量分 86
蛇喰keying.
谢谢你的关注
展开
-
【手撕C语言 第八集】函数栈帧的创建与销毁
我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何待会的?函数参数是如何传递的?这些问题都和函数栈帧有关系。函数栈帧(stack frame)就是函数调用过程中在程序的调用栈(call stack)所开辟的空间,这些空间是用来存放:🎗️函数参数和函数返回值🎗️临时变量(包括函数的非静态的局部变量以及编译器自动生产的其他临时变量)保存上下文信息(包括在函数调用前后需要保持不变的寄存器)。原创 2024-01-24 13:21:07 · 9282 阅读 · 41 评论 -
【手撕C语言 第七集】函数(下)
告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。函数的声明一般出现在函数的使用之前。要满足先声明后使用。函数的声明一般要放在头文件中的。函数的定义是指函数的具体实现,交待函数的功能实现。无论是变量还是函数,都得满足先声明后使用。一般情况下:add.h文件 放函数的声明add.c文件 放函数的定义test.c文件 (#include “add.h”)里面可以调用函数这样写可以将代码进行封装和隐藏。原创 2024-01-24 11:42:18 · 8816 阅读 · 2 评论 -
【手撕C语言 第六集】函数(上)
如果库函数能干所有的事情,那还要程序员干什么?所有更加重要的是自定义函数。自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间statement;//语句项 } ret_type 返回类型fun_name 函数名para1 函数参数我们举一个例子:写一个函数可以找出两个整数中的最大值//get_max函数的设计(x) : (y);原创 2024-01-21 22:20:21 · 8872 阅读 · 1 评论 -
【手撕C语言 第五集】分支和循环(下)
可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。0次,因为for循环的判断语句中使用的是赋值符号=,使得判断语句的结果为0,表达式结果为假,循环一次都不会进去。我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题。continue在while循环中,可能会跳过i++的调整部分。原创 2024-01-20 07:45:00 · 11297 阅读 · 9 评论 -
【手撕C语言 第四集】分支和循环(上)
表达式语句函数调用语句控制语句复合语句空语句本章后面介绍的是控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:条件判断语句也叫分支语句:if语句、switch语句;循环执行语句:do while语句、while语句、for语句;转向语句:break语句、goto语句、continue语句、return语句。原创 2024-01-18 14:36:26 · 3826 阅读 · 0 评论 -
【手撕C语言 第三集】初识C语言
(1)break 在循环中用或者在switch语句中用(2)continue 在循环中用(4)while(5)for内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。变量是创建内存中的(在内存中分配空间的),每个内存单元(每个内存单元也就是上面的一小格)都有地址,所以变量也是有地址的。原创 2024-01-17 22:28:08 · 6455 阅读 · 6 评论 -
【手撕C语言 第二集】初识C语言
define定义的标识符常量,可以写在{}中,不能被修改,可以用来自指定数组的大小。整型数组//定义一个整形数组,最多放10个元素字符数组两种方法(1)(2)原创 2024-01-16 20:44:19 · 7973 阅读 · 5 评论 -
C语言实现通讯录--动态版
实现一个通讯录,联系人的数量可多可少。原创 2023-07-28 18:00:00 · 620 阅读 · 32 评论 -
C语言动态内存管理(三)
在C99语法中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员。原创 2023-07-26 07:00:00 · 435 阅读 · 37 评论 -
C语言实现通讯录--静态版
缺点1通讯录的大小是固定的—>100个元素,空间大小不够灵活✨解决办法:动态内存分配缺点2数据不能永久保存之前通讯录中的信息都是保存在内存中的,程序退出,内存就回收了,下一次重新运行程序,内存重新分配,之前的数据就不见了。✨解决办法:存入文件中–>文件操作。原创 2023-07-25 11:36:40 · 317 阅读 · 36 评论 -
C语言动态内存管理(二)经典笔试题
第二篇内容为大家详细剖析关于动态内存管理的几个经典笔试题。原创 2023-07-21 18:00:00 · 313 阅读 · 20 评论 -
C语言动态内存管理(一)
malloc头文件C语言提供了一个动态内存开辟的函数这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。(1)如果开辟成功,则返回一个指向开辟好空间的指针。(2)如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。(注意开辟失败是因为malloc不会无节制的开辟下去)return 1;}else{注意:a. strerror(errno):将错误码对应的错误信息的字符串地址返回。原创 2023-07-20 18:34:53 · 342 阅读 · 18 评论 -
自定义类型:结构体,枚举,联合
结构是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量.(对比:数组是一组相同类型元素的集合)(1)在定义类型的同时后面给个名字(2)拿类型创建变量在main外创建----全局变量在main里创建变量----局部变量1.位段的成员是整形家族的类型(比如char,int,signed int,unsigned int等)2.位段的成员名后面有一个冒号和一个数字struct Aint _a : 2;//2表示_a占用2个bit位int _b : 5;原创 2023-05-02 22:37:32 · 945 阅读 · 12 评论 -
C语言字符串函数,字符函数,内存操作函数
头文件 #include(1)字符串已经以\0作为结束标志,strlen函数返回的是在字符串中\0前面出现的字符个数(不包含\0)(2)函数指向的字符串必须要以\0结束(3)注意函数的返回值为size_t,实物符号的(易错)运行结果头文件#include(1)源字符串必须以\0结束(2)会将源字符串中的\0拷贝到目标空间(3)目标空间必须足够大,以确保能存放源字符串(不够大时事实上也可以拷贝,运行之后程序会崩溃,非法也要完成任务)(4)目标空间必须原创 2023-04-26 23:15:55 · 1362 阅读 · 24 评论 -
C语言数据的存储
C语言的内置类型char 字符数据类型 1字节(8bit位)short 短整型 2字节(16bit位)int 整型 4字节(32bit位)long 长整型 4/8字节long long 更长的整型 8字节float 单精度浮点型 4字节double 双精度浮点型 8字节。原创 2023-04-08 22:49:02 · 2205 阅读 · 17 评论 -
C语言指针进阶笔试题讲解
通过指针笔试题的学习之后,我深刻认识到了画图对于理解代码的重要性,同时也对指针的运用有了更深的了解.原创 2023-04-01 01:27:36 · 800 阅读 · 29 评论 -
C语言指针进阶(下)
数组–>能够存放一组相同类型的元素,数组的大小取决于数组的元素个数和元素类型指针–>就是地址或者也说是指针变量,大小是4/8个字节二者之间的关系(1)数组是数组,指针是指针,二者不等价(2)数组名是数组首元素的地址,这个地址可以存放在指针变量中(3)我们可以用指针来遍历数组(4)数组名大多数情况下,数组名是数组首元素的地址.但是有两个例外一是sizeof(数组名)–>数组名表示整个数组,计算的是整个数组的大小二是&数组名–>数组名表示整个数组,取出的是数组的大小。原创 2023-03-31 07:00:00 · 477 阅读 · 31 评论 -
C语言指针进阶(中)
含义:🐇指向函数指针数组的指针是一个指针指针指向一个数组 ,数组的元素都是函数指针。原创 2023-03-25 12:32:25 · 633 阅读 · 35 评论 -
C语言指针进阶(上)
1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间2.指针的大小是4或者8个字节(32位平台4个字节,64位平台8个字节)3.指针是有类型的,指针的类型决定了指针±一个整数的长度有多少,指针解引用操作时候的权限4.指针的运算指针能够加减整数运算指针能够解指针指针能够进行关系运算,也就是地址的关系运算,比较大小(1)在看完下面的(2)(3)之后发现这里的*其实就是一个摆设,那为什么既然是一个摆设,还能用呢?原创 2023-03-18 21:24:11 · 2067 阅读 · 36 评论 -
C语言操作符详解(下)
表达式1为真,执行表达式2,否则执行表达式3int a = 0;int b = 0;a > 5?1int a = 0;int b = 0;a > 5?int a = 0;int b = 0;a : b);原创 2023-02-09 00:21:45 · 1315 阅读 · 15 评论 -
C语言操作符详解(上)
除法 得到的是商1.除法操作符的两个操作数都是整数的话,执行的是整数除法.用%d打印2.除法操作符的两个操作数只要有一个浮点点数,执行的是小数除法.用%lf打印% 取模(取余) 得到的是余数1.取模操作符的两个操作数必须是整数,返回的是整除之后的余数.2.除了% 操作符之外,其他的几个操作符可以作用于整数和浮点数//不能这么写,因为两个操作数都是整数,应该用%d printf("%lf\n" , 10 / 3.0);1。原创 2023-02-07 21:31:56 · 1028 阅读 · 16 评论 -
三子棋真是太神奇啦~~~C语言三子棋小游戏详解,具体到每一步操作的解释说明,不信你学不会!
创建几个文件来实现:test.c //测试游戏逻辑游戏的模块:game.h //函数的声明game.c //函数的实现今天你学会制作这个小游戏了呢小伙伴们?💕如果哪里写的有问题,欢迎大家帮我指正.原创 2023-01-17 22:31:46 · 247 阅读 · 15 评论 -
终于学会数组的使用啦~~~------C语言数组学习笔记详解
数组是一组相同类型元素的集合。# define _CRT_SECURE_NO_WARNINGS 1 # include //数组的创建方式: int main() {//创建一个整型数组,里面可以放8个整型数据 char ch [ 10 ];//创建一个字符型数组,里面可以放10个数据 return 0;1# define _CRT_SECURE_NO_WARNINGS 1 # include //数组的创建方式: int main() {原创 2023-01-17 16:27:28 · 274 阅读 · 20 评论 -
你会使用函数的递归和迭代吗?----------C语言函数学习(4)详解
(1)程序调用自身的编程技巧称为递归( recursion)。(2)递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的(3)一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略递归的主要思想方式是:把大事化小今天的内容你学会了吗小伙伴们?💕💕如果哪里写的有问题,欢迎大家帮我指正.原创 2023-01-14 17:57:20 · 355 阅读 · 9 评论 -
你的函数使用对了吗?-------C语言函数学习(3)详解
变量有声明和定义函数也有声明和定义告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。函数的声明一般出现在函数的使用之前。要满足先声明后使用。函数的声明一般要放在头文件中的。函数的定义是指函数的具体实现,交待函数的功能实现int a;//变量的声明 int main() {return 0;//变量的定义int a;原创 2023-01-13 21:45:39 · 389 阅读 · 8 评论 -
C语言函数练习题详解
/实参和形参可以用一样的变量名,但是他们各自的地址不一致。错误示范:把sz放入函数中计算,不作为实参传入,结果会报错。原创 2023-01-12 23:30:15 · 186 阅读 · 5 评论 -
C语言函数详解(看完必会)
自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。//语句项//ret_type 返回类型//fun_name 函数名//para1 函数参数(可以没有,有一个,有多个)建议:先写主函数,---理清怎么用,反推函数怎么去写。原创 2023-01-12 23:22:01 · 562 阅读 · 1 评论 -
分支和循环语句(2)补充goto语句
3.使用goto语句写一个关机程序:让电脑在60s内关机,在60s内输入"我是猪"取消关机。1.C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。运行结果:屏幕上死循环打印hehe haha heihei。最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。4.shutdown命令的拓展。原创 2023-01-12 20:22:24 · 110 阅读 · 6 评论 -
【手撕C语言 第一集】初识C语言
2.在操作系统之上的是上层软件,操作系统之下的是底层软件,C语言比较擅长的是底层软件的开发,但是并不代表不能做上层软件的事情。printf是一个库函数,库函数是C语言的标准数据库中提供的一个现成的函数,直接就能使用。创建.c为后缀的文件----------源文件(注意.cpp是C++源文件的后缀)1.就像书放在书架上需要一块空间,不同类型的数据存储起来也需要不同类型的空间。:全局变量和局部变量的名字可以相同,但是在使用的时候,局部优先。当把局部的a去掉之后,打印出来的就是全局的a。原创 2023-01-11 22:03:02 · 7085 阅读 · 0 评论 -
分支和循环语句(2)
只打印三次的原因是当i=0进入for(int ...)循环中,j循环三次调整为3时,再次进入for(i)循环i=1时此时j的值仍然是3,所以不执行printf语句,再次进入for(i)循环也是这样。5.编写代码实现,模拟用户登录情景,并且只能登陆三次(只允许输入三次密码,如果密码正确,提示登录成功,如果三次均错误的话,则退出程序)当i=5时执行continue语句,不执行下面的代码,再进入do循环,i还是5,由此反复进入死循环。其中使用:int mid=(right-left)/2+left;原创 2023-01-09 12:49:53 · 259 阅读 · 10 评论