自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

好想吃黄焖鸡米饭

还有烤鸡烤鸭及其他好吃的😋

  • 博客(47)
  • 收藏
  • 关注

原创 【C语言】函数指针及其应用

函数指针是C语言中指向函数的指针变量,其本质是存储函数入口地址的指针。与普通指针不同,函数指针指向的是代码段中的可执行指令,而非数据存储区域。1.1  函数指针的概念和应用·核心概念函数指针的类型由函数的返回值类型和参数列表共同决定。例如:input (*ptr)(int, char) 表示ptr是一个指向返回值为int、参数为 (int, char) 的函数的指针。·应用动态函数调用:根据运行时条件选择执行不同函数回调机制:实现框架与业务代码的解耦算法通用化:如自定义排序

2025-05-29 20:53:41 608

原创 【C语言】大程序结构

随着项目的内容逐渐增多,我们不可能把所有代码写在同一个文件中,将代码分散到多个文件中进行管理变得至关重要。1.1 多个源文件代码在实际的C语言项目中,很少会将所有代码都写在一个源文件。多个源文件的使用可以将不同功能的代码进行模块划分,提高代码可读性、可维护性和复合型。例如,我们可以创建一个 main.c 文件作为程序的入口,用于处理整体流程和调用其他功能模块;再创建 math.c 文件专门存放数学计算相关的函数。

2025-05-19 21:03:29 822

原创 【C语言】编译预处理和宏

宏定义是使用#define指令,它可以将一个标识符定义为一个字符串。其基本语法如下:#define 标识符 字符串在这个语法中,“标识符”就是宏的名称,而“字符串”是宏所代表的内容在后续代码中,只要遇到PI,预处理就会将其替换为3.14159。宏的好处在于可以提高代码的可读性和可维护性。在代码里使用NEWLINE时,预处理器会把它替换成,从而实现换行的功能。此外,注释同样可以适用于宏,且如果要表示换行则是在末尾添加/。

2025-04-28 16:00:00 973

原创 【C语言】全局变量、静态本地变量

当程序首次调用包含静态本地变量的函数时,系统会在静态存储区为该变量分配内存。要是变量在声明时有初始化值,那么就会执行初始化操作;要是没有显式初始化,数值类型的静态本地变量会被自动初始化为0,指针类型则会被初始化为空指针。函数执行期间,静态本地变量能够参与各类运算,其值会依据函数内的操作而改变。当函数执行完毕返回时,静态本地变量所占用的内存空间不会释放,它的值会保存在内存中。之后再次调用这个函数时,不会对静态本地变量重新初始化,而是直接使用上次函数调用结束时该变量保存的值。

2025-04-25 16:00:00 1002

原创 【C语言】链表的删除与清除

首先,在删除节点前,要确保指针指向的节点有效,避免出现悬空指针。如,在释放节点内存后,应将指向该节点的指针设置为 NULL,防止意外访问已释放的内存。单向链表由节点组成,每个节点包含数据域和指向下一个节点的指针域——删除操作通常是指删除链表中的某个特定节点。在数据结构中,链表是一种常用且灵活的的数据组织方式,链表的删除操作是其基本操作之一。同时,可以在函数中添加必要的注释,说明函数的功能、参数和返回值,使代码更加清晰易懂。其次,在更新指针时,要确保操作的顺序正确,避免丢失链表中的节点。

2025-04-08 08:00:00 868

原创 【C语言】链表操作

为了使链表更加通用和灵活,可以使用自定义数据结构。可以将链表节点的数据定义为一个结构体,这样可以存储更多类型的数据。·引用头文件·自定义数据结构int id;} Word;·链表节点结构体Word data;} Node;·向链表头部添加节点·打印链表= NULL) {·主函数return 0;⬇️过程和上述差不多,只不过变成了一个组(包含ID和word的)

2025-04-07 08:00:00 958

原创 【C语言】链表初步学习

链表是一种线性数据结构,它由一系列节点组成。与数组不同,链表的节点在内存中不一定是连续存储的。链表通过节点之间的指针来建立逻辑上的顺序关系。在C语言中,链表通常由结构体来定义。int data;} Node;data用于存储节点的数据。next是一个指向同类型的结构体指针,用于指向下一个节点。

2025-04-03 08:00:00 810

原创 【C语言】可变数组:原理与实现

在C语言中,数组是一种固定大小的数据结构——一旦声明了数组的大小,其容量就不能在运行时动态改变。如:int arr[10];定义了一个包含10个整数的数组,在程序执行期间,它始终只能容纳10个元素。这种固定大小的特性带来了一些限制,当我们需要处理数量不确定的数据时,要么预先分配过大的数组造成内存浪费,要么在数据超出数组容量时导致陈故乡错误。1.2 设计可变数组的需求和特性可变数组,也称动态数组,旨在客服C语言数组的上述限制。它的主要需求是能够在运行时动态地增加或减少数组的大小,以适

2025-04-02 08:00:00 933

原创 【C语言】结构体、联合体与类型定义

在C语言中,结构体是一种功能强大的自定义数据类型,它允许将不同类型的数据成员组合成一个有机的整体。结构体的定义以struct关键字开始,紧接着是结构体标签,随后在花括号内罗列结构体的成员列表,最后以分号结束定义。⬇️结构体成员的访问通过点运算符( . )来实现,这使得对结构体内部数据的操作直观且边界。结构体在处理复杂数据结构时表现卓越,例如在描述一个包含多种属性的对象时,结构体能够将这些属性整合在一起,让代码逻辑更加清晰。typedef关键字可以为已有的数据类型创建别名,能够为代码带来更高的可读性和

2025-04-01 08:00:00 749

原创 【C语言】结构与嵌套结构、结构与函数

points 是一个 struct Point 类型的数组,而s是一个包含整数数组的结构。可以把结构指针作为参数传递给函数,进而在函数内部对结构进行修改。在C语言里,结构类型能够作为函数参数传递。这样,函数就可以对结构中的成员进行操作。结构中可以包含其他结构类型的成员。可以定义结构类型的变量和数组。函数也能返回结构类型的数据。定义结构的数组和数组的结构。函数也可以返回结构指针。

2025-03-31 08:00:00 768

原创 【C语言】枚举与结构类型

enum 枚举名{枚举常量1;枚举常量2;···枚举常量n枚举名可有可不有,末尾要加分号。先完整地声明结构类型,随后再定义该类型的变量,代码结构清晰,便于理解与维护.int roll;在声明结构类型的同时定义变量,能够使代码更加紧凑,尤其适用于简单的场景。int age;

2025-03-30 08:00:00 560

原创 【C语言】字符串处理:从基础函数到高效搜索

putchar函数用于向标准输出设备(通常是屏幕)输出一个字符。其函数原型为,参数c可以是一个字符常量,也可以是一个表示字符的整数(其ASCII码值)。⬇️putchar函数简单易用,在需要逐个输出字符的场景十分方便,比如在循环中输出字符串的每个字符。

2025-03-29 08:00:00 1178

原创 【C语言】字符串输入输出与字符串数组

结尾,若在字符串构建过程中忘记添加结束符,字符串处理函数将无法正确识别字符串的边界,可能会读取到额外的字符,导致程序逻辑错误。字符串处理是众多应用场景的基础,无论是文本编辑、数据解析,还是用户界面的显示,都离不开字符串的精准操作。在字符串处理过程中,容易遇到一些常见的错误陷阱,这些错误可能会导致程序崩溃或产生不可预期的结果。在使用字符串之前若未对其进行初始化,字符串的内容将是不确定的。或不安全的输入方式时,若输入的字符串长度超过目标数组的容量,就会发生缓冲区溢出。数组会包含程序名和这些额外的参数。

2025-03-28 08:00:00 786

原创 字符串与字符串变量

C语言本身并没有专门为字符串设计独立的数据类型,而是巧妙地借助字符数组来实现字符串的功能。是一个字符指针,它可以指向一个字符数组的首地址,也可以指向一个字符串常量的首地址。字符串变量本质上就是字符数组,不同之处在于字符串值可以在程序运行期间进行修改。当把字符串常量赋值给字符串时,实际上是把字符串常量的首地址赋给了变量。字符数组本质上是数组的一种特殊形式,其数组元素的数据类型为字符。因为字符串常量存储在只读内存区域,使用指针可以直接指向该区域。的时候,C语言才会认为字符串结束,进而停止对字符的处理。

2025-03-27 08:00:00 679

原创 C语言指针与const、指针运算及动态内存分配

​一、指针与const1.如果指针是const当指针本身被声明为const时,意味着指针的值(即它所指向的地址)在初始化后便不能被修改,但可以通过该指针修改其所指向的变量的值。⬇️p 是一个指针常量,一经初始化指向变量a,其指向就无法再改变。 通过*p的方式,我们能够顺利修改a的值。一般适用于希望某个指针始终指向特定的变量,同时又允许对该变量进行修改时,就可以使用指针常量。2.指针所指的是const当指针所指向的内容被声明为const时,不能通过该指针修改其所指向的变量的

2025-03-26 08:00:00 668

原创 指针的使用、指针与数组

它允许我们在函数内部直接操作外部变量的值,因为传递的是变量的地址,而不是变量的值本身。数组名是一个常量指针,它的值不能被修改,即不能将数组名重新赋值为其他地址。虽然指针本身可以指向其他地址,但不能通过该指针修改所指向的常量值。在访问数组时,如果指针超过了数组的范围,就会发生指针越界错误。指针作为函数参数、指针的使用以及指针与数组关系的详细介绍。常量指针常量表示指针本身和指针所指向的值都不能被修改。指针常量是指针本身不能被修改,即指针的地址不能被改变。指向常量的指针表示指针所指向的值不能被修改。

2025-03-25 08:00:00 1141

原创 指针的基础知识及&取地址运算

指针式C语言中一种特殊的变量,其作用是保存其他变量的地址。可以把指针想象成一个指向某个特定位置的箭头,这个箭头指向的就是其他变量在内存中的存储地址。如果指针要指向一个整型变量,那么数据类型就是int;如果指向一个字符型变量,数据类型就是char。

2025-03-24 08:00:00 828

原创 二维阵法(数组)的学习与应用

判断某个元素是否存在于二维数组中,同样使用嵌套的for循环遍历数组,若找到目标元素则返回相应信息。和上述描述的方法一样,只需要为部分元素提供初始值,未指定初始值的元素会被自动初始化为。当省略行数时,编译器会依据初始化列表的内容自动确定行数,但列数必须明确指定。需要明确指定二维数组的行数和列数,并且要为数组中的每个元素都提供初始值。如果将柜子和柜子里的物体看成二维数组的话, 你需要做的就是将行和列互换。矩阵,原来矩阵的行变成列,原矩阵的列变成转置后的行。如,定义一个二维数组,省略行数,由编译器自动确定。

2025-03-23 08:00:00 1291

原创 进阶的阵法(数组)学习、初识二维阵法

数据类型 数组名[行数][列数];其中,“数据类型” 代表数组中每个元素的数据类型,常见的有int(整型)、float(浮点型)、char(字符型)等;“数组名” 是二维数组的名称,需遵循 C 语言标识符的命名规则;“行数” 指的是二维数组中包含的一维数组的数量;“列数” 是每个一维数组中包含的元素的数量。上述代码定义了一个名为a的二维数组,该数组有 3 行 4 列,总共能够存储3 * 4 = 12个int类型的元素。

2025-03-22 08:00:00 918

原创 数组的初步学习和使用、打听通讯石价格

在C语言中,数组是一种用于存储相同类型元素的集合的数据结构。数组在内存中占据连续的存储单元,这使得通过下标可以快速的访问数组中的任意元素。数组的定义需要明确元素的类型、数组的名称以及数组的大小。其基本语法格式如下⬇️元素类型 数组名[数组大小];解释元素类型:指定数组中每个元素的数据类型,可以是基本数据类型(如intcharfloat等)也可以是自定义的数据类型数组名:是用户为数据取的标识符(也可以理解为名字),遵循C语言标识符的命名规则。

2025-03-21 08:00:00 768

原创 法术的参数、本地变量以及注意事项

目录1.函数的传参值传参2.本地变量3.本地变量规则作用域生命周期初始化4.main()函数是什么无参数形式带参数形式5.函数要注意的事项函数声明返回值参数匹配小结前文讲的是形参和实参,实际上就是传参的过程:把数据从调用函数传递到被调用函数的过程。值传递时,会把实参的值复制给形参,在函数内部对形参的修改不会影响实参。说人话就是:函数内部参数的修改不会影响外部,也就是只在函数内部有效。这是因为在函数调用时,会为形参分配新的内存空间,将实参的值复制到这个新的内存空间中,函数内部对形参的操作都是在新的内存空间上进

2025-03-20 08:00:00 592

原创 真正学习到法术——法术是什么?

在最初我们学习了printf函数和scanf函数,在调用了c语言的标准库后,我们可以重复在不同的代码中实现print打印的操作、以及scanf的输入工作。函数在C语言中是非常重要的结构,它能够把代码模块化(也就是能够将一段特定功能的代码封装起来),提供代码的复用性和可读性。复用性:能在不同的场景、项目或功能模块中被重复使用的特性可读性:代码能被开发者容易理解和阅读的程度返回类型 函数名(参数列表) {函数体;return 返回值;返回类型:表明函数返回值的类型。如int。

2025-03-19 18:00:00 664

原创 C 语言中的类型转换、逻辑运算与条件运算

C中的自动类型转换通常情况下的自动类型转换在c语言里,当不同类型的数据进行运算时,会自动将低精度类型转换为高精度类型;以确保运算结果的准确性,规则如下:char、short会自动转换为intfloat会自动转换为double当不同类型混合运算时,会向精度更高的类型转换,顺序为:char / short < int < unsigned int < long < unsigned long < float < double

2025-03-18 08:00:00 626

原创 字符类型、逃逸字符

在c语言中,字符属于基本的数据类型,借助char来定义。字符在计算机中是以整数形式存储的,每个字符都对应着一个唯一的ASCII值。ASCII码涵盖了从0到127的数值,分别代表不同的字符,像英文字母、数字以及标点符号等。

2025-03-17 08:00:00 956

原创 施法时怎么格式化输入输出整数、浮点数

这里补充一下8位二进制数的范围是-128 ~ 127,中间还有个0,8位二进制数能表达256个十进制数。等C的专栏写的差不多了,下一个专栏大概率是计算机网络,那里我会细讲。或者搜在线的OJ平台就行。

2025-03-16 08:00:00 1011

原创 计算机中的补码原码反码

传统计算机能理解的语言——二进制我们现在所学习、所使用的计算机多属于传统计算机范畴,也就是由电子元件组成的计算机。一、二进制——计算机的语言传统计算机是由电子元件构成的,这些电子元件的特性决定了计算机只能识别两种状态,如电路的通与断。二进制正好只有0和1两个数码,能够与电子元件的这两种状态相对应。所以二进制成为了计算机进行数据存储、处理和传输的基本语言。

2025-03-15 08:00:00 1039

原创 数据类型及sizeof,进制转换

基本数据类型整数类型在计算机中最小的存储单位是位(bit),而一个字节(byte)通常由8个二进制位组成。每个二进制位可以表示0或1。前文中我们常常提到的int就是整型,如果按从小到大来的话:char : 通常占用 1 个字节(8bit)内存空间。它既能存储字符,也能存储小整数。字符在计算机中以 ASCII 码形式存储,如

2025-03-14 20:00:00 1025

原创 苦练c语言的你发现——高人洞府居然是陷阱?

你起始的位置是在这个九宫格左上角的格子(我们将其标记为第 1 个格子),并且在移动过程中,你只能向右或者向下移动到与之相邻的格子,不能往其他方向移动,也不能斜着移动。

2025-03-13 08:00:00 876

原创 神秘高人洞府闯关(上)

本篇是练习题,相当于全是目前所学的内容的题目的练习,嗯,本专栏适合初学者,写完这个专栏后会把整个专栏最外层的名字让你有点疑惑?散财,不过,等你看了规则之后已经明白了散财的意思:只要说出一段下品灵石的数量,可以选择对应额度的上中下三种灵石,三种灵石加起来的价值和说出的下品灵石数量的价值一致。三种灵石的换算:1上品灵石 = 100 中品灵石 = 10000下品灵石 如,输出14300下品灵石可以换出1枚上品灵石,43枚中品灵石。输出23450下品灵石可以换出2枚上品灵石,34再修改的更加严谨的。

2025-03-12 08:00:00 570

原创 跳出多层循环嵌套的法术及神秘高人洞府

break结合标记变量可以实现跳出多层循环,但代码相对复杂,需要额外的标记变量来控制外层循环的退出

2025-03-11 08:00:00 953

原创 循环控制和循环的嵌套

break用于立即终止当前所在的循环,跳出循环体,继续执行循环之后的代码。用于跳过当前循环的剩余部分,直接进入下一轮循环的判断。

2025-03-10 08:00:00 758

原创 for循环法术以及循环术法的选择

while特点:先判断条件再执行循环体适用场景:适用于循环次数不确定的情况do-while特点:先执行循环体再判断条件,至少执行一次循环体适用场景:先执行后判断的情况for特点:结构紧凑适用场景:适用于已知循环次数的情况/执行固定次数的任务。例如,遍历数组、列表等数据结构时,通常可以使用 for 循环

2025-03-09 08:00:00 850

原创 while和do while法术

前文中的if else可以处理一些语境,但对于一些特定的语境if else就没办法有效的处理。为了更加高效的处理问题我们会使用到循环。循环是一种控制结构,它允许我们重复执行一段代码,直到满足特定的条件为止。循环的主要作用是减少代码的重复编写,提高代码的效率和可维护性。在程序中,当我们需要多次执行相同或相似的操作时,就可以使用循环结构。在c中常见的循环有while循环,for while 循环以及for循环,下面我们都会学习到。

2025-03-08 08:00:00 1007

原创 判断大类的法术

上篇学到了if的进阶法术,if else。在实际的对战当中,运用法术的时候不止一个,自然会多种结合在一起用,所以if else当中还能嵌套if再运用。指的是在一个 if 或 else 语句块内部再包含其他的 if-else 语句,用于处理复杂的条件判断逻辑。

2025-03-07 08:00:00 1540

原创 if法术的进阶

上篇说到了if,if是对一个条件如果成立,计算机所作出的事情。但在解决实际问题中,一个if常常是无法解决一个问题的。说话常说如果怎样就怎样,否则就怎样的一种情况。

2025-03-06 08:00:00 934

原创 if法术(语句)及关系运算

只有满足if语句中()条件表达式的内容的时候,才会到{ }内进行计算。 也就是条件表达式成立进行if内的操作。关系运算是用于比较两个值之间关系的操作,其结果是一个布尔值,在 C 语言里用整数 0 表示假(false),用非零值(通常是 1)表示真(true)。

2025-03-05 08:00:00 811

原创 施法顺序(运算符优先级)及交换变量

​在printf法术的运用中有介绍过四则运算,也说过C和数学一样,运算符也有规律,例如遵从:先算括号内的。那么这些规律,我们称之为运算符优先级。​

2025-03-04 08:00:00 806

原创 高级法术(表达式)

在前篇我们多多少少的接触到一些表达式,只是我们还没正式的学习到。我们前文接触到的有:算术表达式、赋值表达式。表达式是由运算符、操作数以及标点符号组成的有效序列,其目的是为了计算一个值,也是组成语句的基本单位,单个变量或常量也可以称为表达式。

2025-03-03 08:00:00 750

原创 常量及灵气修炼

前面不止一次的提到过,在使用printf法术输出或是用scanf法术输入时,我们使用的都是"%d",表示一个十进制的整数。但如果我们让printf输出10/3的数学中10和10.0是一样的,但在C语言中,10.0是浮点数,这样说可能有点难以理解,那么我们现在写一小段代码,让printf来输出10➗4的值。

2025-03-02 08:00:00 931

原创 灵气运转的变量详解(下)和scanf法术

这里的 int spent = 0;  这里的等号做的事就是赋值,将等号右边的值赋予了等号的左边的spent中,如果看成数学的话,那就是spent = 0,因为这个赋值是在定义变量的时候做的赋值,所以这里又叫初始化。和数学不一样的是,在数学中:a = b 与 b = a 是相同的;但在计算机中,是进行一个赋值的动作,

2025-03-01 19:00:00 1007

空空如也

空空如也

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

TA关注的人

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