C语言
文章平均质量分 92
秦少游在淮海
自由
展开
-
常见 字符串库函数 的使用与模拟实现 #strlen #strcpy #strcat #strcmp#strstr #strtok #strncpy #strncat #strncmp
strstr --> 查找一个子字符串的函数(在一个字符串中找另外一个字符串的函数)strstr 的工作原理: 在 str1 所指向的字符串中查找str2 所指向的字符串;如果找到了,然后就返回在str1 中找到 str2 的起始位置;如果没有找到就返回空指针 NULL;原创 2024-08-10 15:58:26 · 1212 阅读 · 0 评论 -
C语言 #函数 #库函数 #自定义函数 #形参和实参 #嵌套调用和链式访问 #函数的声明和定义 #函数指针 #函数指针数组#函数递归 #回调函数 #库函数qsort #利用qsort 思想实现冒泡排序
回调函数是什么?回调函数就是通过函数指针调用的函数;如果你将一个函数的地址作为一个参数传给另外一个函数,当此指针被用来调用所指向的函数的时候,被调用的函数就是回调函数;回调函数不是由该函数的实现方直接调用,而是在特定的事件或者条件发生时由另外一方函数调用的,用于对此事件进行响应;原创 2024-08-02 11:43:57 · 1139 阅读 · 0 评论 -
C语言 #具有展开功能的排雷游戏
游戏思路:当玩家输入自己的选择后,要么退出游戏,要么进入排雷游戏;当玩家进入排雷游戏时,就要先给玩家展示一下棋盘,让玩家输入想要排查的坐标,计算机再判断玩家输入的这个坐标是不是'雷',如果是雷,游戏结束;当然菜单会再出现一次,玩家可自行判断要不要再来一局游戏;如果不是雷就要向玩家展示此坐标周围雷的个数,并且玩家会一直输入坐标进行排雷直到玩家踩到雷或者玩家排雷成功;原创 2024-07-28 20:43:48 · 1263 阅读 · 0 评论 -
C语言 #指针数组 #数组指针 #数组参数、指针参数
1、指针数组是一个存放指针的数组。2、想要访问指针数组中存放的数组名中的元素便有两种方式,一是通过数组的下标进行访问;二是利用地址的方式进行访问;3、数组名通常表示的都是其首元素的地址;但是有两个例外:1、sizeof(数组名) ,这里的数组名表示整个数组,所以计算的是整个数组的大小2、&数组名,这里的数组名表示的依然是整个数组,所以 &数组名 取出的是整个数组的地址;4、数组指针的初始化:想要存放数组的地址,指针变量类型中的[ ]里必须要标明数组的元素个数5、[ ] 的优先级高于*原创 2024-07-25 11:00:09 · 1380 阅读 · 2 评论 -
C语言 #字符指针
以例子为导向来分析字符指针的中存的是什么,以及常量字符串在内存中是如何存储的。1、字符指针就是指针变量指向的对象是字符类型,即指针变量的类型为 char*;2、指针p中存放的是常量字符串在常量区存放的首字符 'a' 的地址3、常量字符串存放在内存中的常量区,常量区中的数据只能读取而不能被修改。原创 2024-07-20 11:46:31 · 1366 阅读 · 1 评论 -
C语言 数据存储之结构类型 万字讲解#数据类型详细介绍 #整型在内存中的存储 #大小端字节序 #浮点型在内存的存储解析
万字讲解在前面我们已经学过很多的内置类型:char //字符数据类型 1 byteshort //短整型数据 2 byteint //整型 4 bytelong //长整型4byte (32位 )\ 8 byte (64位)long long //更长的整型 8 bytefloat //单精度浮点数 4 bytedouble //双精度浮点数 8 byte。原创 2024-07-19 10:31:27 · 1044 阅读 · 1 评论 -
C语言 调试 #什么是bug,调试 #Debug 与 Release版本的区别 #VS调试快捷键 #模拟实现strcpy ,strlen #编程常见错误
大家多多亲自尝试调试,故而这里部分内容讲得很略;Debug 通常称为调试版本:它包含调试信息,并且不做任何优化,以便于程序员调试程序;程序员在写代码的时候,需要经常性地调试代码,就在此处设置为Debug版本,这样在编译的过程中产生的是Debug版本的可执行程序,其中包含调试信息,是可以直接进行调试的;Release 称为发布版本:它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户更好地使用。当程序员写完代码,测试再对代码进行测试(测试测试的是release版本),直到程序的质量交原创 2024-07-16 18:51:10 · 1035 阅读 · 0 评论 -
C语言 底层逻辑详细阐述结构体 #结构体的声明 #结构体的初始化 #结构体成员访问 #结构体传参
基于自我理解的角度来讲结构体;1、结构是一些值的集合,这些值称为成员变量;结构的每个成员可以是不同类型的变量;2、结构体类型的声明通常是在main函数外进行的;当然也可以在主函数内部进行声明,只不过此时的结构体类型就为局部变量,只能在main 函数的内部使用;此处并不是全局变量与局部变量,请注意。3、在结构体变量创建时再给它一个初始值就是结构体变量的初始化;在创建结构体变量赋值时,至少为一个结构体成员赋值;故而分为完全初始化与不完全初始化;4、. 点操作符: 结构体变量 . 成员名。原创 2024-07-15 10:41:33 · 980 阅读 · 0 评论 -
C语言 底层逻辑详细阐述指针(一)万字讲解 #指针是什么? #指针和指针类型 #指针的解引用 #野指针 #指针的运算 #指针和数组 #二级指针 #指针数组
全文12000+在正式开始讲解指针之前,我们先来思考一下什么是内存。生活中,手机有内存、电脑也有内存……内存是电脑上重要的存储器,计算机中的CPU(中央处理器)在处理数据的时候,需要的数据是从内存中取得的。那么你可能就会有疑问,每个内存单元的编号也就是地址,是怎么产生的呢?地址产生的原理:依靠电脑硬件的电路产生;地址中总线通电便会产生电信号,而电信号分为正脉冲和负脉冲;即地址线通电便会产生1或者0;地址信息会下达给内存,在内存中便可以找到该地址对应的数据,将数据通过地址总线传入CPU寄存器。原创 2024-07-14 15:26:11 · 1356 阅读 · 0 评论 -
C语言 #赋值操作符 #复合操作符 #单目操作符 #关系操作符 #逻辑操作符 #条件操作符 #逗号表达式 #下标引用操作符 #函数调用操作符 #结构体成员
赋值可以是单个赋值,也可以是连续赋值注:连续赋值时,在调试的过程中是看不到值得变化过程,故而不太推荐只用连续赋值例1:int a = 1;//初始化:在创建变量的时候就给它一个初始值int b = 2;int c = 3;//连续赋值是从右向左进行解读;即 b = c + 3;a = b;1、赋值可以是单个赋值,也可以是连续赋值;连续赋值时,在调试的过程中是看不到值得变化过程,故而不太推荐只用连续赋值2、-(负值)、+(正值) 没啥价值,但是存在此操作符;原创 2024-07-11 15:33:43 · 747 阅读 · 3 评论 -
学习C语言两个月后的收获(篇目6)#超详细的#整型提升 #算术转换 #操作符的属性
本文将抽丝剥茧地讲述在表达式求值时因为操作数类型的不同而存在的整型提升和算术转换;以及操作符的属性),对于理解本篇文章十分有帮助1、为什么存在整型提升与算术转换?因为CPU计算整型数据的最小长度为 4Byte,且是不同类型的数据在内存中所占的空间不同,就会导致其二进制序列的位数不同,为了利于计算,当操作符的各个操作数的类型(大于4Byte)不同时,就会发生算术转换.有符号整型的提升:用其符号位来填补无符号整型的提升:直接补0向上转换类型4、操作符的属性:操作符有优先级和结合性。相邻两个操作符之间。原创 2024-07-10 18:12:00 · 1282 阅读 · 0 评论 -
学习C语言两个月后的收获(篇目五)#超级详细的 #数据在内存中的存储 #移位操作符 #位操作符 #移位操作符与位操作符的实际应用
本片文章将会细致深入地讲解 整数的三种二进制表示形式:原码、反码、补码之间的关系、存在的意义;移位操作符:>;位操作符: & 、 | 、^ 、~ 的注意事项和规则;文章结尾有三个实际使用移位操作符与位操作符的例子注:全文详细,非常适合新手阅读一、数据在内存中的存储思考:在开始移位操作符之前,我们先来了解一下数据在内存中的存储方式是怎么样的。众所周知,计算机存储数据是以二进制的形式存储的。什么是二进制呢?二进制是数据的一种表现形式,常见的进制有二进制、八进制、十进制、十六进制。原创 2024-07-04 17:17:05 · 874 阅读 · 0 评论 -
学习C语言两个月后的收获(篇目四)#超详细的数组讲解
我在初次接触数组的时候就常常搞不清楚数组使用的原理。本文将会从我当时学习的感受去深入讲解一维、二维数组的创建、使用、在内存中的存储形式。而我们如果把一维数组当作数组的元素,那么这个数组就是二维数组(请务必记住这句话,这句话是理解的重点);当然,如果我们把二维数组当作数组的元素,此时的数组就为三维数组;二维以上的数组统称为多维数组原创 2024-06-18 22:26:54 · 1377 阅读 · 6 评论 -
学习C语言两个月后的收获(篇目三) #算术操作符 #强制类型转换 #关系操作符 #条件操作符 #逻辑操作符
分为整数的除法和小数的除法;% :模(取余) 分有整除求模和负数求模 !!!没有小数求模!!!初始化: 在变量创建的时候给它一个值赋值:在变量创建好了之后,再给它一个值在条件判断时,注意区别 ’=‘ 与 ‘==’ ,‘=’ 是赋值,‘==’ 才表示相等逻辑操作符 : && 、 || 、 !原创 2024-06-16 18:58:36 · 948 阅读 · 0 评论 -
学习C语言两个月后的收获(篇目二) #超详细的scanf() 讲解-->基本用法、scanf() 的返回值 、占位符、赋值忽略符
用户输入的数据会先放入缓存(内存区域),等按下回车键之后,按照占位符对缓存进行解读 。解读用户数据时,会从上一次遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符开始。 只有scanf() 在处理非%c 类型的数据时,会主动跳过、过滤掉空白字符,包括空格、制表符、换行符(即使按回车键将输入分为了几行,也不影响解读)%*c ;在 占位符的% 后面添加一个 赋值忽略符 * ,表示 这个占位符没有对应的变量,解读后不必返回。简单来说就是这个占位符不会有返回值,解析后就被丢弃了。原创 2024-06-15 20:58:06 · 1140 阅读 · 0 评论 -
C语言基础收获篇目:#strlen() 的本质 ;strlen ()求字符串长度,为什么还可以通过数组的首元素地址求到数组中字符串的长度? #sizeof
我是这样理解sizeof的:类型所占空间*数量。而在函数中,ch不再是数组,而仅仅是一个指针,是ch数组首元素的地址。将数组名传给函数,函数这边接受的是数组首元素的地址。strlen () 可以求出字符串长度,可是为什么在函数中可以利用字符串数组首元素的地址,而求出这个字符数组的长度呢?上面这个代码中,strlen给人的感觉就是 ,strlen顺着数组首元素地址找到了在函数外面的数组并且完成了它的任务;也就是说,strlen通过这个ch指针去找到了这个原本的数组,也就是说strlen 执行的参数是指针!原创 2024-06-14 20:16:42 · 338 阅读 · 0 评论 -
学习c语言两个月后的收获(篇目一) #printf 、占位符、转义字符、ASCII码值、32个关键字、语句分类
当寄存器在处理某些数据的时候,内存中的数据就可以往高速缓存中拿,而高速缓存中的数据也可以往寄存器中拿(保证大部分的数据能在寄存器中被找到)-->这样就可以大大提升CPU的计算速度。有点像打字时选择了前一个字符,当你要往后继续输入时,后面输入的这个字符会将选择区域的字符给取代,后面输入的这个字符会将\b前一个字符给取代。1.空语句:当格式要求在某个位置需要放置一个语句的时候,但是又不想让它执行任何-->就可以使用空语句-->这个语句不需要做任何事。原创 2024-06-13 21:12:51 · 826 阅读 · 0 评论