![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 77
龙ze
这个作者很懒,什么都没留下…
展开
-
c语言——字符函数与字符串函数
如果一个字符串有多个界符,需要被多次切割,第一次调用函数时,第一个参数需要是指定的字符串地址,而往后调用函数,第一个参数传入。而perror函数可以看做是printf函数与strerror函数的封装,即可以获取错误信息指针,又可以打印。这些函数的参数是指定的字符,返回值为int类型,如果是字符是指定类型,则返回非0的数,否则返回0。本函数的参数是错误码,在c语言程序启动时,便会设置一个errno全局变量记录当前程序的错误码。在c语言中,当我们使用c语言提供的库函数时,发生某种错误,就会对应相应的错误码,原创 2024-06-10 15:46:20 · 918 阅读 · 2 评论 -
c语言项目-贪吃蛇项目2-游戏的设计与分析
前面我们已经将项目所需的背景知识,大体讲解完了,接下来开始对游戏进行设计与分析提示:以下是本篇文章正文内容,下面案例可供参考自己的调试能力比较差,没有认真地进行调试,监视变量!缺乏错误经验,一个野指针便让自己摸不着头脑!这种做项目的思维方式有问题,后面的出现问题,又不断地修改前面的内容,如果是大项目,很容易崩盘!具体:在函数中修改尾结点时,不需要使用二级指针,可以通过->next->next的方式进行修改。原创 2024-06-04 20:37:15 · 1062 阅读 · 6 评论 -
c语言项目-贪吃蛇1-背景知识【求个关注!】
此函数的形参与GetConsoleCursorInfo函数的形参相同,第一个参数是控制台屏幕的句柄,第二个参数是光标信息结构体变量,而此函数的作用是设置对应控制台屏幕的光标信息。如果返回值二进制最高位为1,说明此虚拟值对应的按键的状态是按下,如果返回值二进制最高位为0,说明此虚拟值对应的按键状态是抬起.如果返回值的二进制最低位为1,说明此按键被按过,如果返回值的二进制的最低位为0,说明此虚拟值对应的按键并没有被按过。,我们通过函数返回值进行判断,返回值的类型是short类型,原创 2024-04-23 09:56:44 · 968 阅读 · 4 评论 -
c语言-预处理详解【求个关注!】
c语言中定义了一些预定义符号,这些预定义符号可以直接使用,当然这些预定义符号也在预处理阶段处理!//_ _FLIE_ _ //用来编译的源文件 //__LINE__ //在当前文件中被编译的代码行号 //__DATE__ //文件被编译的日期 //__TIME__ //文件被编译的时间 //__STDC__ 如果编译器完全实现 ANSI C 则值为1,否则未定义 // 至于这个是关于什么的信息,我不清楚//在VS编译器中并没有STDC的规定!return 0;原创 2024-04-15 17:24:36 · 1288 阅读 · 6 评论 -
c语言中声明的问题【求个关注!】
变量定义是为变量分配内存空间,并赋予初始值变量声明是向程序表明变量的类型与名字定义也是声明,但声明不是定义在程序中我们可以声明多次,但只能定义一次,这就好比,我们可以使用很多次锤子,但是锤子只有一把程序员们编写程序时,不会将程序全部写在一个.c文件中(这样不能使程序员们同时进行编码,且代码可读性很差),而是存放在多个文件中去, 如果我们想引用其他文件定义的变量,函数,则需要用到声明,声明的作用即告诉编译器,有这个函数或变量,可以调用,而在链接阶段使程序去查找变量或函数的定义。原创 2024-04-14 10:09:46 · 374 阅读 · 3 评论 -
c语言 — 文件操作【求个关注!】
硬盘(磁盘)上的文件是文件,但在程序设计中,可分为两种文件—程序文件与数据文件(从文件功能的角度进行分析)在打开文件之后就需要对文件进行读写:下面讲一下这些读写函数:这些读写函数中有些能用作文件流的操作,有些能用作所有的输入流或输出流,故将这些函数命名为文件操作函数是不合理的!注意:输入:将文件中的数据输入到程序中输出:通过程序将数据存放到文件中。原创 2024-04-08 17:07:32 · 1289 阅读 · 5 评论 -
c语言——自定义类型——【结构体,联合体,枚举】
char b;double c;char b;double c;}*p2;p1 = &s1;//可以使用//错误代码//因为系统不能识别两个无符号的结构体是不是同一类型return 0;位段(或称为位域)是结构体类型的一种形式,与常规结构体的差别在于成员不同在c99之前的版本,位段只能是 int, unsigned int, signed int 或者是 char(属于整形家族)类型。原创 2024-03-27 17:04:59 · 350 阅读 · 3 评论 -
c语言动态内存管理【求个关注!】
我们创建数组,变量申请空间时,申请的空间都是固定大小的,不能改变(除非修改代码)为此有个动态内存管理,将内存的权限交给我们程序员,可以主动地申请内存空间,用完后,由程序员释放这样可以提高内存空间的利用率,但是也提高了风险。原创 2024-03-27 16:45:32 · 256 阅读 · 2 评论 -
数据在内存中的存储问题
原本这个问题是个鸡蛋剥壳问题,该从鸡蛋的大端剥还是鸡蛋的小端剥//对应到我们计算机来讲,就成了,在数据大于1个字节时,(我们知道一个地址对应相应的内存空间,// 这里我们以一个地址对应一个字节来举例)//低字节部分(即小数值位)是放到高地址处还是放到低地址处//对应的,高字节部分是放到低地址处,还是高地址处。原创 2024-03-18 15:46:38 · 442 阅读 · 1 评论 -
c语言中的内存函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-03-15 21:34:12 · 849 阅读 · 4 评论 -
指针(3)(建议收藏哦!)
野指针是指针指向的地址不确定的,地址值的类型不正确的,指针指向的地址越界的,指向的地址已经释放的,这几种指针.在&arr,与sizeof(arr),中,arr都代表数组名,其它的情况下数组名则是数组首元素的地址。而这就是assert语句的作用!//良好的编码习惯可以避免很多不必要的问题,节省我们的精力,我们应该避免野指针的出现。这次顺利运行,assert宏的作用不限于判断是否为NULL,也可以判断其他的表达式!关于数组名的问题,我在之前的博客中写过,但是觉得不全面,这个我好好整理一下。原创 2024-03-10 20:45:17 · 352 阅读 · 2 评论 -
在c语言中的空格问题
scanf函数的原理即将输入的数据存入缓冲区,由系统读取缓冲区进行存入,而当系统读取数据时,读到空格即停止,并不会读取空格!空格易混淆之处在于,有时其当作字符,有时并不当作字符,在编译时会被系统忽略,应仔细判断具体情况!例 :char arr1[] = {'a',' ','b','c','\0'};1 空格作为字符时,初始化与普通字符并无差别,而不被引号引用的空格,则忽略。(2)当scanf函数的占位符为%c时,则不会跳过空格,将空格当作字符。a后面,空格被存储成功!原创 2024-01-29 12:07:01 · 565 阅读 · 0 评论 -
扫雷游戏(9*9)
设计思想:1 先打印菜单页面,接着跟着菜单提示选择对应的功能,如果输入不存在的选项,则提示重新输入 . 2 只有输入错误才会进行循环,重新输入,而选择1或者2 程序执行完之后,则不会再循环。设计格子的思想:在扫雷时,我们需要计算一个坐标周围八个坐标中共有多少个雷,而对于格子的边的坐标,在计算时,就会越界。1 首先要创建扫雷游戏的格子,采用二维数组实现,创建了两个二维数组,一个作为显示的格子,另一个作为幕后的格子。此打印格子的函数,除了打印了扫雷所用的格子,还有格子的坐标。原创 2024-02-01 15:37:52 · 433 阅读 · 2 评论 -
数组的问题(c语言数组内容,建议收藏!)
目录: 一:(1)一维数组一维数组的创建与初始化一维数组在内存中的空间分配(2)二维数组二维数组的创建与初始化二维数组在内存中的空间分配二 : 变长数组一维数组的运用二维数组的运用三 :(1) 数组本身的类型与数组元素类型的区别(2)计算数组的内存大小(3)计算数组元素的个数四 : 数组作函数参数(1)一维数组作函数参数及与指针的关联(2)二维数组作函数参数及与指针的关联五 :数组指针指针数组。原创 2024-02-26 10:42:55 · 810 阅读 · 4 评论 -
指针(1) (因为内容较多我只能分成几部分,建议收藏哦)
二级指针即指针的地址,也即指向指针类型的指针(可以从不同的角度理解指针,大家按照喜欢的角度理解即可)关于数组的内容的,我在我之前的博客中写过,但是不够全面,清晰,这里再在这里重写一下数组指针的部分!// 结构体类型的二级指针,暂时不弄了,我没发现用处,有需要的小伙伴可在评论区说,我会添上!// 兄弟们,还有其他指针的部分没梳理到,我会在接下来的博客中继续梳理,欢迎大家指正!数组指针数组是数组元素为数组指针的数组,(有些绕,把握本质就行,不要细扣字)指针是指向内存中的地址,简要的说,指针就是地址。原创 2024-03-05 16:57:01 · 497 阅读 · 0 评论 -
指针(2)(建议收藏哦!)
除了sizeof(arr)(未传参前)与&arr中的arr代表整个数组,其他的arr中的值等于数组首元素的地址。最后,void*也是指针类型,指针类型的大小取决于64位还是32位,前者指针大小为8个字节,后者为4个字节。//对于上一篇博客我已讲过指针的算术运算,大家可以去看看,这里我们看一下,数组名+1会出现什么情况?原理:在计算机硬件设备中,地址线数决定地址的位数,地址线数因此也成为决定系统内存大小的一个因素!在64位的情况下,地址是8个字节-(一个字节是8位);(3)数组的地址与数组首元素地址的关联。原创 2024-03-06 22:03:04 · 456 阅读 · 2 评论