自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 文件和文件操作

一般谈文件有两种:程序文件和数据文件(从文件功能的角度来分类的)。上面说的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)。

2023-12-14 16:12:51 28 1

原创 自定义类型:结构体,联合和枚举的介绍,用法及特点

位段的成员必须是int,unsigned int或signed int,在c99中位段成员的类型也可以选择其他类型。位段的成员名后边有一个冒号和一个数字。比如:s就是一个位段类型。那么位段s所占内存的大小是多少?答案是8个字节。

2023-12-03 13:43:29 38 1

原创 整数和浮点数在内存中的存储

超过一个字节的数据在内存中存储时,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序的存储大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。

2023-12-01 13:23:29 37 1

原创 字符,字符串,和内存函数

在不同系统和C语言标准库中都规定了一些错误码,一般是放在errno.h这个头文件中说明的,C语言程序启动的时候就会使用一个全局的变量errno来记录程序的当前错误码,只不过程序启动的时候errno是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会返回对应的错误码,存放在errno中,而错误码是数字很难理解,所以每一个错误码有对应的错误信息,strerror函数就可以将错误信息字符串的地址返回。strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个指向这个标记的指针。

2023-11-29 19:33:24 26 1

原创 第13讲:深入了解指针(3)

当你把函数的指针作为参数传给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行相应。在学习操作符时,我们学习了sizeof,sizeof计算变量所占内存空间大小,单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占空间的大小。上一讲中我们写的计算机实现的代码太过冗杂,其实,我们可以通过回调函数来将代码简化。回调函数就是一个通过函数指针调用的函数。

2023-11-21 18:47:43 17

原创 第12讲:深入理解指针(2)

我们可以发现arr和arr + 1相差4个字节,但是&arr和&arr + 1相差40个字节,这就是因为&arr是数组的地址,+1操作是跳过整个数组的。parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型一堆数组,parr[i][j]就是整型一维数组中的元素。但是,当sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节;首先,p先与*结合,说明p是一个指针变量,然后指向的是一个大小为10个整型的数组,所以p是一个指针,指向一个数组,叫。

2023-11-19 13:20:48 40

原创 第11讲:深入理解指针(1)

我们可以理解为:32位机器有32根地址总线,每根线只有两态,表示0,1【电脉冲有无】,那么一根线,就能表示2种含义,32根地址总线可以表示2的32次方种含义。传址调用,可以让函数与主函数之间建立真正的联系,在函数内部可以修改主调函数中的变量,而未来的函数中只是需要主调函数中的变量值来实现计算,就可以采用传值调用。如果不知道指针应该指向哪里,可以给指针赋值NULL,NULL是C语言中定义的一个标识常量,值是0,0也是地址,这个地址是无法使用的。上述代码中b是不能被修改的,不符合语法规则,系统会自动报错。

2023-11-15 21:29:40 22 1

原创 第10讲:操作符详解

8进制的数字每一位是0到7的,0到7的数字,各自写成2进制,最多有3个2进制就足够了,比如7的二进制是111,所以在2进制转8进制的时候,从二进制序列中右边开始向左每3个2进制位会换算一个8进制位,剩余不够三个直接换算。同上,操作符的优先级只能决定自减--的运算在+的运算的前面,但是我们并没有办法得知,+操作符的左操作数的获取在右操作之前还是之后求值,所以结果是不可预测的,是有歧义的。表达式1在计算的时候,由于*比+的优先级高,只能保证,*的计算比+早,但是优先级并不能决定第三个*比第一个+早执行。

2023-11-11 17:10:28 25 1

原创 第9讲:函数递归

函数不返回,函数对应的栈帧空间就⼀直占⽤,所以如果函数调⽤中存在递归调⽤的话,每⼀次递归 函数调⽤都会开辟属于⾃⼰的栈帧空间,直到函数递归不再继续,开始回归,才逐层释放栈帧空间。上面是一个简单的递归程序,只不过上面的递归只是为了演示递归的基本形式,不是为了解决问题,最终会导致栈溢出(stack overflow)。事实上,我们看到的许多问题是以递归的形式进行解释,这只是因为它比非递归的形式更加清晰,但是这些问题的迭代实现往往比递归实现的效率高。递归中的递就是递推的意思,归就是回归的意思。

2023-11-07 12:57:55 34

原创 第6讲:函数

这些就被称为库函数。代码二中,我们从输出结果看,i的值有累加的效果,其实test函数中的i创建好后,出函数的时候是不会销毁的,重新进入函数也就不会重新创建变量,直接上次累计的数值继续计算。如果有参数,要交代清楚参数的类型和名字,以及参数的个数。我们可以把函数想象成小型的一个加工厂,工厂得输出原材料,经过工厂加工才能生产出产品,那函数也是一样的,函数一般会输入一些值,经过函数内的计算,得出结果。库函数是在标准库中对应的头⽂件中声明的,所以库函数的使⽤,务必包含对应的头⽂件,不包含是 可能会出现⼀些问题的。

2023-11-06 18:39:54 19

原创 第7讲:数组和函数实践:扫雷游戏

棋盘上雷的信息(1)和非雷的信息(0),假如我们排查了某个位置后,这个位置处不是雷,这个坐标的周围有一个雷,那我们需要将排查出的雷的信息数量记录,并打印出来,作为排雷的重要参考信息的。这里我们采用另外一种方案,专门给棋盘(对应一个数组mine)存放布置的雷的信息,再给另外一个棋盘(对应另外一个数组show)存放排查出的雷的信息。这里的解决方案,比如:雷和非雷的信息不要使用数字,使用某些字符就行,这样就避免冲突了,但是这样做棋盘上有雷和非雷的信息,还有排查出的雷的个数的信息,比较混杂,不够方便。

2023-10-31 21:50:07 40 1

原创 第五讲:数组

从输出的结果来看,每⼀⾏内部的每个元素都是相邻的,地址之间相差4个字节,跨⾏位置处的两个元 素(如:arr[0][4]和arr[1][0])之间也是差4个字节,所以⼆维数组中的每个元素都是连续存放的。c语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后一个元素的下标是n-1,• [] 中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是根据实际的需求指定就⾏。数据也是有类型的,数据算是一种自定义的类型,去掉数组名留下的就是数组的类型。• 数组中存放的多个数据,类型是相同的。

2023-10-29 17:30:14 39 1

原创 第一讲:C语言常见的概念

控制语句用于控制程序的执行流程,以实现程序的各种程序方式(C语言支持三种结构:顺序结构,选择结构,循环结构),他们有特定的语句定义符构成,C语言有九种控制语句。C语言中有一批保留的名字的符号,比如:int,if,return,这些符号被称为保留字或者关键字。3.转向语句:break语句,goto语句,continue语句,return语句。2.循环执行语句:do while语句,while语句,for语句;main函数是程序的入口,程序是main函数的第一行开始执行的。关键字是不能自己创造的。

2023-10-21 14:42:48 48 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除