
夏驰和徐策带你从零开始学C语言
文章平均质量分 88
本专栏主要是本人想系统的学习和整理C语言的知识而设立的,
夏驰和徐策
一个喜欢打游戏的计算机专业学生;这是我的GitHub:https://github.com/XiaChiandXuce
展开
-
1.6 程序设计的任务
程序设计不仅仅是写代码和运行程序,而是一个系统的工程,涵盖从问题分析、算法设计、编写程序、调试测试到编写文档的全过程。每一个阶段都需要细致的工作,确保最终的程序不仅能正确运行,还能满足用户的需求并且易于使用。希望这段讲解能够帮助大一的计算机新生们更好地理解程序设计的任务和步骤。原创 2024-06-20 09:33:49 · 441 阅读 · 0 评论 -
1.2 什么是计算机语言
计算机语言是人与计算机交流的桥梁,它让我们能够向计算机描述我们想要它执行的操作。正如人与人之间的交流需要语言一样,人和计算机之间的交流也需要特定的语言。本篇博客将介绍计算机语言的基本概念,发展历程以及不同类型的计算机语言。计算机语言是使计算机执行任务的必要工具。从机器语言到汇编语言,再到高级语言和面向对象的语言,每一步的发展都反映了人们在追求更高效、更易理解和更强大的编程工具的过程。了解不同类型的计算机语言,以及它们的优点和适用场景,对于计算机编程人员来说至关重要。原创 2024-04-03 12:17:29 · 436 阅读 · 0 评论 -
4.6 选择结构嵌套
语句的嵌套是编程中处理复杂决策的一个强大工具。然而,过度或不当的使用可能导致代码难以阅读和维护,因此需要谨慎使用,并确保代码的整洁性和可读性。语句时,应保持逻辑清晰,尽量避免过深的嵌套,因为这可能导致代码难以理解和维护。这种结构允许在多个层级上进行决策,每个决策都依赖于上一级的结果。语句的嵌套使用,包括其基本形式、注意事项以及实际应用示例。第一种方法的逻辑更直接,而第二种方法使用了嵌套的。语句的嵌套,能够有效处理多条件的判断。考虑一个简单的阶跃函数,根据输入的。为避免混淆,推荐在嵌套的。原创 2024-05-03 00:43:24 · 478 阅读 · 0 评论 -
10.5 文件读写的出错检测
函数的学习,我们可以实现对文件操作的错误检测和处理,从而提高程序的健壮性和可靠性。在实际编程中,掌握这些函数的使用方法,可以更加有效地进行文件操作,提高程序的实用性和稳定性。为了确保文件操作的可靠性,C 提供了一些函数用来检查输入输出函数调用时可能出现的错误。需要注意的是,对同一个文件每一次调用输入输出函数,都会产生一个新的。函数,可以确保文件操作的可靠性,避免因为未及时检测和处理错误而导致的数据丢失或程序崩溃。在实际编程中,文件操作的错误检测是非常重要的,尤其是在处理大量数据时。函数值为一个非零值。原创 2024-06-05 08:23:09 · 411 阅读 · 0 评论 -
10.4 随机读取数据
一般情况下,在对字符文件进行顺序读写时,文件位置标记指向文件开头,这时如果对文件进行读的操作,就读第1个字符,然后文件位置标记向后移一个位置,在下一次执行读的操作时,就将位置标记指向的第2个字符读入。如果是顺序写文件,则每写完一个数据后,文件位置标记顺序向后移一个位置,然后在下一次执行写操作时把数据写入位置标记所指的位置。为了对读写进行控制,系统为每个文件设置了一个文件读写位置标记(简称文件位置标记或文件标记),用来指示“接下来要读写的下一个字符的位置”。函数的作用是得到流式文件中文件位置标记的当前位置。原创 2024-06-05 08:19:43 · 952 阅读 · 0 评论 -
10.3 顺序读写数据文件
文件打开之后,就可以对它进行读写了。在顺序写时,先写入的数据存放在文件中前面的位置,后写入的数据存放在文件中后面的位置。在顺序读时,先读文件中前面的数据,后读文件中后面的数据。也就是说,对顺序读写来说,对文件读写数据的顺序和数据在文件中的物理顺序是一致的。顺序读写需要用库函数实现。原创 2024-06-05 08:11:04 · 820 阅读 · 0 评论 -
9.7 用typedef声明新类型名
int i, j将变量名换成新类型名(例如:将i换成Count在最前面加typedef然后可以用新类型名去定义变量。简单地说,就是按定义变量的方式,把变量名换上新类型名,并且在最前面加typedef,就声明了新类型名代表原来的类型。int a[100]。将变量名a。在前面加上typedef,得到。用来定义变量:Num a;相当于定义了:int a[100];原创 2024-06-04 19:33:09 · 832 阅读 · 0 评论 -
9.6 使用枚举类型
所谓“枚举”就是指把可能的值一一列举出来,变量的值只限于列举出来的值的范围内。此外,枚举变量的值限制在定义时规定的几个枚举元素范围内,如果赋予它其他值,就会出现出错信息,便于检查。如果定义时未人为指定,则按上面的默认规则处理,即第1个枚举元素的值为0,故。: C编译器对枚举类型的枚举元素按常量处理,故称枚举常量。每次从口袋中先后取出3个球,问得到3种不同颜色的球的可能取法,输出每种排列的情况。枚举常量是由程序设计者命名的,用什么名字代表什么含义,完全由程序员根据自己的需要而定,并在程序中作相应处理。原创 2024-06-04 19:26:08 · 1020 阅读 · 0 评论 -
*9.5 共用体类型
有时,我们希望用同一段内存单元存放不同类型的变量。例如,将一个短整型变量、一个字符型变量和一个实型变量放在同一个内存地址开始的单元中。如下图所示:图 9.17 显示了以上三个变量在内存中占用的字节数虽然不同,但都从同一地址开始存放。使用这种覆盖技术时,后一个数据会覆盖前面的数据。这种使几个不同的变量共享同一段内存的结构,被称为“共用体”类型的结构。定义共用体类型变量的一般形式为:union 共用体名 {成员表列} 变量表列;上面的定义表示不同类型的变量ichf可以存放到同一个存储单元中。原创 2024-06-04 16:41:22 · 722 阅读 · 0 评论 -
*9.4用指针处理链表
链表是一种常见且重要的数据结构。它是一种动态存储分配的结构,能够根据需要开辟内存单元,避免了数组固定长度的限制,从而更加高效地利用内存资源。前面介绍了结构体变量,用它去建立链表是最合适的。一个结构体变量包含若干成员,这些成员可以是数值类型、字符类型、数组类型,也可以是指针类型。用指针类型成员来存放下一个结点的地址。int num;// next是指针变量,指向结构体变量其中,成员num和score用来存放结点中的有用数据(用户需要用到的数据),相当于图中的结点ABCD。next。原创 2024-06-04 11:19:06 · 1131 阅读 · 0 评论 -
9.3 结构体指针
所谓结构体指针就是指向结构体变量的指针,一个结构体变量的起始地址就是这个结构体变量的指针。如果把一个结构体变量的起始地址存放在一个指针变量中,那么这个指针变量就指向该结构体变量。原创 2024-06-04 10:50:12 · 1624 阅读 · 0 评论 -
9.2 结构体数组
下面举一个简单的例子来说明怎样定义和引用结构体数组。struct 结构体名 {成员表列} 数组名[数组长度];或者先声明一个结构体类型(如结构体类型 数组名[数组长度];// leader 是结构体数组名对结构体数组初始化的形式是在定义数组的后面加上=(初值表列);原创 2024-06-04 10:30:19 · 931 阅读 · 0 评论 -
*8.8 动态内存分配与指向它的指针变量
第7章介绍过全局变量和局部变量。全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个称为栈(stack)的区域。除此以外,C语言还允许建立内存动态分配区域,以存放一些临时用的数据。这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆(heap)区。可以根据需要,向系统申请所需大小的空间。原创 2024-06-01 11:23:10 · 982 阅读 · 0 评论 -
*8.7 指针数组和多重指针
一个数组,如果其元素均为指针类型数据,就称为指针数组。也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。int *p[4];由于[]比优先级高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,表示p数组有4个元素。然后再与p前面的结合,表示此数组是指针类型的,每个数组元素(相当于一个指针变量)都可指向一个整型变量。这是指向一维数组的指针变量。类型名* 数组名[数组长度];类型名中应包括符号,如int*表示是指向整型数据的指针类型。char **p;p的前面有两个号。原创 2024-06-01 10:01:06 · 989 阅读 · 0 评论 -
*8.6 返回指针值的函数
在C语言中,一个函数可以返回整型值、字符值、实型值等基本数据类型,同样也可以返回指针型的数据,即地址。通过上述分析和图8.35,可以更清晰地理解程序中指针变量的含义和用法,以及如何通过指针操作实现对学生成绩的查询和不及格学生的查找。(即存放序号为k的学生的序号为0的课程的数组元素的地址)。指向i行0列元素),就输出该学生(有不及格课程的学生)4门课成绩。函数中检查3个学生有无不及格的课程,如果有,就返回该学生的0号课程的地址。作为区分有无不及格课程的标志。,若相等,表示所查的序号为i的学生有不及格课程(原创 2024-06-01 09:03:11 · 1297 阅读 · 0 评论 -
8.5 指向函数的指针
在程序中定义一个函数时,编译器会将该函数的源代码转换为可执行代码,并分配一段存储空间。这段内存空间有一个起始地址,也称为函数的入口地址。每次调用函数时,都从该地址入口开始执行这段函数代码。函数名代表函数的起始地址,调用函数时,从函数名得到函数的起始地址,并执行函数代码。因此,函数名就是函数的指针,它代表函数的起始地址。我们可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。定义p是一个指向函数的指针变量,它可以指向函数类型为整型且有两个整型参数的函数。原创 2024-05-22 11:26:35 · 815 阅读 · 0 评论 -
8.4 通过指针引用字符串
通过指针引用字符串的方法在 C 语言编程中具有重要意义。它不仅提高了代码的灵活性和可读性,还增强了字符串处理的效率。在实际编程中,可以根据具体需求选择合适的方法引用和操作字符串,以达到最佳效果。用字符指针作为函数参数时,实参与形参的类型有以下几种对应关系,如表 8.3 所示。表 8.3 调用函数时实参与形参的对应关系实参形参字符数组名字符数组名字符数组名字符指针变量字符指针变量字符数组名字符指针变量字符指针变量。原创 2024-05-22 10:42:31 · 851 阅读 · 0 评论 -
8.3 通过指针引用数组
从应用的角度看,用户可以认为有一个形参数组,它从实参数组那里得到起始地址,因此形参数组与实参数组共占同一段内存单元,在调用函数期间,如果改变了形参数组的值,也就是改变了实参数组的值。当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时,由于数组名代表的是数组首元素地址,因此传递的值是地址,所以要求形参为指针变量。在函数调用进行虚实结合后,形参的值就是实参数组首元素的地址。代表二维数组首元素的地址,现在的首元素不是一个简单的整型元素,而是由 4 个整型元素所组成的一维数组,因此。原创 2024-05-20 14:39:46 · 1229 阅读 · 0 评论 -
8.2 指针变量
在例8.1中,我们已经看到怎样定义指针变量。类型名 *指针变量名;左端的int是在定义指针变量时必须指定的“基类型”。指针变量的基类型用来指定此指针变量可以指向的变量的类型。例如,上面定义的基类型为int的指针变量pointer_1和pointer_2,可以用来指向整型的变量i和j,但不能指向浮点型变量a和b。指针变量前的“*”表示该变量为指针型变量指针变量名是pointer_1和pointer_2,而不是*pointer_1和*pointer_2。这是与定义整型或实型变量的形式不同的。原创 2024-05-20 11:57:00 · 1291 阅读 · 0 评论 -
8.1 指针是什么
假设程序已定义了3个整型变量i, j, k,在程序编译时,系统可能分配地址为20002003的4个字节给变量i,20042007的4个字节给j,2008~2011的4个字节给k(不同的编译系统在不同次的编译中,分配给变量的存储单元的地址是不相同的),见图8.1。要存取变量i的值,既可以用直接访问的方式,也可以采用间接访问的方式:先找到存放“变量i的地址”的变量i_pointer,从中取出i的地址(2000),然后到2000字节开始的存储单元中取出i的值,见图8.1。注意,对变量的访问都是通过地址进行的。原创 2024-05-20 10:23:52 · 1039 阅读 · 0 评论 -
7.10 关于变量的声明和定义
在第2章中介绍了如何定义一个变量。在本章中又介绍了如何对一个变量作声明。可能有些读者弄不清楚定义与声明有什么区别,它们是否是一回事。有人认为声明就是定义,有人认为只有赋了值的才是定义。在C语言的学习中,关于定义与声明这两个名词的使用上始终存在着混淆。不仅许多初学者没有搞清楚,连不少介绍C语言的教材也没有给出准确的介绍。从第2章已经知道,一个函数一般由两部分组成:声明部分和执行语句。声明部分的作用是对有关的标识符(如变量、函数、结构体、共用体等)的属性进行声明。原创 2024-05-18 21:05:47 · 611 阅读 · 0 评论 -
*7.9 变量的存储方式和生存期
通过以上介绍,我们了解了变量的存储方式和生存期。不同的存储类别决定了变量的作用域和生存期,在编写程序时,合理地选择变量的存储类别可以提高程序的效率和可读性。原创 2024-05-18 19:18:07 · 1087 阅读 · 0 评论 -
7.8 局部变量和全局变量
在前面的章节中,我们见到的大多数程序只包含一个main函数,变量通常在函数的开头定义。这些变量在函数的范围内有效,即在该函数的开头定义的变量可以在该函数中被引用。在本章中,我们见到了一些包含两个或多个函数的程序,每个函数分别定义变量。这引出了一个重要的问题:在一个函数中定义的变量能否在其他函数中引用?在不同位置定义的变量,在什么范围内有效?这就是变量的作用域问题。每个变量都有一个作用域问题,即它们在什么范围内有效。本节专门讨论这个重要问题。原创 2024-05-18 18:37:13 · 684 阅读 · 0 评论 -
7.7 数组作为函数参数
在 C 语言编程中,数组作为一种重要的数据结构,不仅能存储多个数据元素,还可以作为整体或通过其元素单独传递给函数。当数组作为参数传递给函数时,传递的实际上是数组首元素的地址,这使得函数能够通过原始数据进行操作,而不仅仅是复制其值。在 C 语言中,数组名可以作为函数的实参和形参。使用数组名作为实参时,传递的是数组首元素的地址,而非整个数组的拷贝。这种传递方式效率较高,因为它避免了大量数据的复制。形参接收这个地址,从而可以在函数内部直接访问和修改原始数组的元素。原创 2024-05-17 22:43:29 · 1100 阅读 · 2 评论 -
7.6 函数的递归调用
递归调用是程序设计中一种重要的方法,其中一个函数在执行过程中直接或间接地调用自己。递归调用可以是直接的,如一个函数直接调用其自身,或间接的,如两个或更多的函数相互调用形成闭环。递归方法在解决诸如数学问题、数据分析和算法设计等领域非常有用,因为它可以将复杂的问题分解为更简单的子问题。递归是一种强大的编程技巧,适用于多种问题,尤其是那些可以自然分解为相似子问题的问题。有效使用递归可以极大地简化程序设计,但需要小心处理基本情况和递归终止条件,以避免无限递归和其他潜在的运行时错误。原创 2024-05-17 22:33:37 · 867 阅读 · 0 评论 -
7.5 函数调用嵌套
C 语言中的函数定义是互相平行和独立的,也就是说一个函数中不能定义另一个函数,但可以进行嵌套调用。在一个函数调用另一个函数时,就产生了嵌套调用的现象。通过这个例子,我们可以了解到嵌套调用的机制,以及如何更有效地优化和实现代码逻辑。函数,就形成了嵌套调用的层级结构。图 7.5 表示了两层嵌套(连同。:输入四个整数,找出其中最大的数,并用函数的嵌套调用来实现。函数找出四个数中的最大者,在。原创 2024-05-09 11:07:50 · 425 阅读 · 0 评论 -
6.2 怎样定义和引用二维数组
二维数组的定义方式和一维数组相似。以上代码定义了一个float类型的二维数组,第一维表示有 3 个元素,第二维表示有 6 个元素。每一维的长度分别用一对方括号括起来。类型说明符 数组名[常量表达式][常量表达式];类型说明符 数组名[常量表达式][常量表达式];// 错误的数组定义a是 3×4(3 行 4 列)的数组,b是 5×10(5 行 10 列)的数组。二维数组可以看作特殊的一维数组,其每个元素都是一个一维数组。例如,a。原创 2024-05-09 10:54:11 · 1153 阅读 · 0 评论 -
5.8 循环程序举例
在这段程序中,通过对 ASCII 码值的计算,可以快速而有效地实现字符之间的转换。Fibonacci 数列以 1 和 1 开始,从第三个数起,每个数都是前两个数的和。本节将通过一个具体的例子来分析循环结构编程的应用与技巧,并特别关注解题思路和程序分析。本例将展示如何利用循环结构编写程序,生成 Fibonacci(斐波那契)数列的前 40 个数,并同时探讨优化算法的解题思路。通过这个例子,可以清楚看到如何利用循环结构和条件判断来实现复杂的计算逻辑,并在算法设计时有效控制精度与效率之间的平衡。原创 2024-05-07 21:02:49 · 785 阅读 · 0 评论 -
5.7 改变循环执行状态
break和continue语句是控制循环结构的强大工具。break用于完全退出循环,而continue用于跳过当前迭代的剩余部分,继续后续迭代。它们的使用可以使代码更加灵活,但也需要小心,以避免引入逻辑错误或难以跟踪的行为。通过理解和适当地使用这两个语句,程序员可以更有效地控制程序的执行流程。原创 2024-05-07 20:00:34 · 595 阅读 · 0 评论 -
5.5 循环的嵌套
在编程中,循环的嵌套允许在一个循环内部执行另一个完整的循环。以下是六种常见的循环嵌套结构及其应用、优点和缺点的分析。循环的嵌套提供了极大的灵活性和强大的功能,但也带来了代码复杂性和潜在的性能问题。在使用时,开发者应仔细考虑每种结构的适用场景,并尽可能优化循环条件和执行逻辑,以保证代码的高效和可维护性。:外层条件需要持续检测,而内层操作至少需要执行一次,如重试机制中的任务执行。:适用于需要固定次数循环,但每次循环中的任务执行次数可能变化的场景。:适用于至少需要执行一次外循环体的任务,例如初始化后的重复检测。原创 2024-05-06 16:10:16 · 742 阅读 · 0 评论 -
5.4 用for语句实现循环
语句由于其紧凑的结构和明确的迭代方式,非常适合处理计数和步进循环,它可以清晰地定义循环的开始、结束和步进,使代码易于理解和维护。语句首先执行初始化表达式,然后评估循环条件表达式。如果条件为真,执行循环体,随后执行更新表达式,并重复此过程,直到循环条件为假。语句是 C 语言中实现循环的另一种强大工具,特别适用于循环次数已知或需要按特定步骤迭代变量的场景。语句中表达式的灵活性可能会导致代码难以阅读,尤其是在复杂的程序中。循环时,保持简洁和清晰,避免不必要的复杂性。大于100,输出结果为5050。原创 2024-05-06 15:55:50 · 371 阅读 · 0 评论 -
5.3 用do....while语句实现循环
在 C 语言中,除了while语句之外,do...while语句提供了另一种形式的循环结构,它的特点是先执行循环体,然后再检查条件。这种结构特别适用于那些至少需要执行一次循环体的情况。原创 2024-05-06 15:44:57 · 515 阅读 · 0 评论 -
5.2 用while语句实现循环
whilewhile。原创 2024-05-06 15:39:26 · 629 阅读 · 0 评论 -
5.1 为什么需要循环控制
掌握循环结构的使用是每个程序员必须具备的基本技能之一,这不仅可以使程序更加简洁高效,还可以处理更复杂的问题。在接下来的章节中,我们将详细探讨不同类型的循环结构及其在各种应用程序中的实际使用情况。在没有循环结构的情况下,如果我们需要处理重复的任务,比如计算全班学生的平均成绩,我们可能会编写多个非常相似的代码段来完成这一任务。在程序设计中,除了基本的顺序结构和选择结构之外,循环结构(也称为重复结构)是不可或缺的。循环,我们可以在一个简洁的程序段内处理所有50个学生的成绩输入和平均成绩计算。原创 2024-05-06 15:31:33 · 467 阅读 · 0 评论 -
4.8 选择结构程序综合举例
本节将继续介绍几个包含选择结构的应用程序,帮助加深对选择结构的理解和应用。详细的程序设计包括了对二次方程的所有可能情况的判断,并通过条件分支结构来实现。具体的程序实现和分析,请参见本章内容。通过这些例子,我们不仅可以学习如何处理选择结构,还可以理解如何将其应用于实际问题中,提高编程技能和逻辑思维能力。折扣的变化是有规律的,基于距离的250的倍数进行分段。在之前的学习中,我们已经介绍过判断闰年的方法。这个例子中,我们需要处理几种情况,根据二次方程的判别式 𝑏2−4𝑎𝑐b2−4ac 的值来确定方程的根。原创 2024-05-06 15:26:50 · 298 阅读 · 0 评论 -
4.7 用switch语句实现多分支选择结构
switch语句提供了一种高效的方法来处理基于单一变量的多个选择。它使代码更加简洁、清晰,易于理解和维护。对于处理多分支的逻辑,特别是在选项数量较多时,switch是比多层嵌套if语句更优的选择。原创 2024-05-03 00:55:03 · 831 阅读 · 0 评论 -
4.5 条件运算符与条件表达式
条件运算符是C语言中的一个三元运算符,也是C语言中唯一的三目运算符。表达式1?表达式2 : 表达式3。表达式1:这是一个条件判断,其结果必须是布尔值,即真(非0)或假(0)。表达式2:当表达式1为真时,整个条件表达式的结果为表达式2的值。表达式3:当表达式1为假时,整个条件表达式的结果为表达式3的值。条件运算符提供了一种高效、简洁的方法来处理基于条件的操作。它不仅可以简化代码,还可以减少编写多行if-else语句的需要。虽然在初学时可能不太常用,但掌握它将大大提高编程的效率和代码的可读性。原创 2024-05-03 00:32:27 · 533 阅读 · 0 评论 -
4.4 逻辑运算符和逻辑表达式
b | a && b | a || b | |-------|-------|-------|-------|--------|--------| | 真 | 真 | 假 | 假 | 真 | 真 | | 真 | 假 | 假 | 真 | 假 | 真 | | 假 | 真 | 真 | 假 | 假 | 真 | | 假 | 假 | 真 | 真 | 假 | 假 |这种情况下,单一的关系表达式不足以表达复杂的逻辑关系,我们就需要用到逻辑运算符来连接多个关系表达式,形成逻辑表达式。这有助于理解各种组合条件下表达式的结果。原创 2024-04-29 10:52:46 · 1372 阅读 · 0 评论 -
4.3 关系运算符
它们不仅帮助我们进行决策,还能有效控制程序流程,是编程中不可或缺的工具。这意味着在表达式中,算术运算会先执行,然后才是关系运算,最后是赋值运算。关系表达式是使用关系运算符将两个数值或数值表达式连接起来的表达式。这种表达式的结果是一个逻辑值,即“真”或“假”。语句中,我们可能会检查一个表达式是否满足特定的条件。这就涉及到了关系运算符和关系表达式,它们是进行逻辑决策的基础。在编程中,尤其是使用C语言时,我们经常需要进行条件判断。在C程序中,你可能会遇到将关系表达式的结果赋值给变量的情况。原创 2024-04-29 10:33:47 · 345 阅读 · 0 评论 -
4.2 用if语句实现选择结构
例如,判断一个人是否超过70岁,如果是,则表达式结果为“真”,否则为“假”。这里的关键在于如何交换两个变量的值,这不能通过简单的直接赋值来完成。通过这两个例子,我们可以看出,if语句在处理需要条件决策的问题时非常有用。在更复杂的程序中,正确地使用if语句可以大大增强程序的功能和灵活性。我们可以使用一种简单的排序方法,如冒泡排序的初级形式,来确保数字的顺序。每次比较后,如果条件成立,就进行交换,确保数值的正确顺序。实现两个变量的值的交换。语句的一般形式,帮助大家更好地理解和使用这一重要的编程结构。原创 2024-04-27 09:40:07 · 720 阅读 · 0 评论