- 博客(35)
- 收藏
- 关注
原创 文件处理的基本操作
为什么要使用文件:程序的处理结果在程序结束后就消失,要想将程序运行的结果保存下来,就可以将相关内容保存在中。针对文件、键盘、显示器、打印机等外部设备的数据的读写操作都是通过进行操作的。我们可以将流想象成流。
2024-06-21 11:07:56
714
原创 自定义类型:结构体
C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。也可以称为“记录”(record)。struct是声明结构体类型时必须使用的关键字,不能省略。struct 结构体名成员列表结构体名是由用户规定的,也可以称为“结构体标记”(structure tag),以区别于其它结构体类型。花括号内时该结构体所包括的子项,称为结构体的成员(member)。对各成员都应该进行类型声明,即:类型名 成员名;定义结构体类型的三种方法。
2024-06-01 16:28:13
1089
原创 strncat的使用及其模拟实现
strncat是一个C标准库函数,用于将一个字符串的一部分追加到另一个字符串的末尾。也就是说,src指向的字符串的前n个字符会追加到dest指向的字符串的末尾,并在dest末尾添加终止符。如果src字符串的长度小于n,则追加整个src字符串。如果src字符串的长度大于或等于n,则只追加src字符串的前n个字符。
2024-05-03 17:58:43
209
原创 库函数strncpy的使用及其模拟实现
strncpy是一个C语言标准库函数,用于将一个字符串的一部分复制到另一个字符串中。也就是说, 该函数能够将src指向的字符串的前n个字符复制到dest指向的字符串中。如果src字符串的长度小于n,则dest将被空字符填充以保证总共复制n个字符。如果src字符串大于或等于n,则dest不会被空字符结束。
2024-05-03 17:15:20
36
原创 ctype.h
ctype.h是C语言标准库中的头文件,提供了一组用于测试和映射字符的函数原型,以及一些宏定义。这些函数和宏定义通常用在字符处理和文本处理中,进行字符类型检查和转换。ctype.h头文件中包含了一系列用于处理字符的函数和宏,例如检查字符是字母、数组还是标点符号,以及字符的大小写转换等操作。二、ctype.h的简单使用。
2024-04-17 12:00:00
267
原创 库函数strcat的使用及模拟实现
strcat是C语言中用于字符串操作的函数,用于将一个字符串(包括空字符结尾)连接到另一个字符串的末尾。dest是要追加到的目标字符穿的指针,必须具有足够的空间来容纳源字符串。src是要追加的源字符串的指针。返回一个指向目标字符串dest的指针。strcat函数会将源字符串src的内容追加到目标字符串dest的末尾,并在连接后的字符串末尾添加空字符,从而形成一个有效的字符串。
2024-04-17 09:00:00
270
原创 库函数strcpy的使用及模拟实现
strcpy是C语言中用于字符串操作的函数,用于将一个字符串(包括空字符结尾)复制到另一个字符串中。dest是要复制到的目标字符串的指针。src是要复制的源字符串的指针。返回一个指向目标字符串dest的指针。strcpy函数会将源字符串src复制到目标字符串dest中,知道遇到源字符串的空字符'\0'为止。复制完成后,目标字符串dest将以空字符结尾,形成一个有效的字符串。
2024-04-16 21:40:26
313
原创 库函数strlen的使用及模拟实现
strlen是一个C语言中常用的字符串处理函数,用于计算一个以空字符('\0')为结尾的字符串中的字符个数,即字符串的长度,不包括结尾的空字符。这个函数通常备用哦过来确定字符串的实际长度,一边进行字符串操作或内存分配。在C语言中,字符串实际上是以字符数组的形式存储在内存中,以空字符结尾作为结束标记。strlen函数通过遍历字符串,直到遇到空字符为止,从而确定字符串的长度。str是一个以空字符结尾的字符串。返回值是一个size_t类型的整数,表示字符串中非空字符的数量,不包括结尾的空字符。
2024-04-16 20:59:32
334
原创 回调函数和qsort函数的使用
回调函数是一种函数,它作为参数传给另一个函数,并在满足某些条件时由该函数调用。回调函数常见于事件驱动编程、异步编程、以及在库中用于通知客户端代码某个时间已发生或某个任务已完成的情况下。回调函数的使用允许非程序在执行过程中动态地注册和调用用户定义的函数,从而增加了程序的灵活性和可扩展性。
2024-04-14 15:00:00
451
原创 sizeof()和strlen
strlen是一个用于计算字符串长度的C标准库函数,它返回一个size_t类型的值,表示输入字符串中非空字符的数量,不包括字符串结尾的空字符'\0'。在使用时,strlen函数接收一个以空字符为结尾的字符串作为参数,并计算这个字符串中字符的数量,知道遇到字符串结尾的空字符为止。#include//使用strlen库函数需要用到的头文件int main()//%zu是C语言中用来格式化size_t类型变量的格式符号return 0;
2024-04-14 14:00:00
256
原创 C语言:函数指针数组
函数指针数组其实就是一个数组,其中所有的元素都是函数指针。在C语言中,可以将函数的地址存储在数组中,并通过数组下标来访问和调用相应的函数。这样的数组通常用于实现状态机、命令调度器、事件处理等场景中。
2024-04-13 08:30:00
160
原创 typedef关键字
typedef是C和C++中的一个关键字,用于创建新的数据类型别名。通过typedef,可以为已有的数据类型定义一个新的名称,使得代码更易读、更具可维护性。
2024-04-13 08:00:00
265
原创 C语言:函数指针变量
函数指针变量是指向函数的指针,它允许将函数的地址作为数据存储在变量中。在C语言中,函数名代表函数的地址,因此可以使用函数指针变量来指向某个函数,并通过该指针调用相应的函数。允许结果如下:注:在不同电脑上的允许结果不同,但test和&test一定相同。
2024-04-12 20:21:14
412
原创 二维数组传参的本质
换个角度看二维数组,二维数组可以看作是每个元素都是一维数组的数组,那么二维数组的首元素就是第一行,是一个一维数组。所以,根据数组名是数组首元素地址这个规则,二维数组的数组名实际上就是二维数组的第一行的地址,是一维数组的地址。在C语言中,二维数组在内存中是以连续的存储空间存放的,因此可以通过指针将数组的地址传递给函数,从而实现对二维数组的传参操作。因为二维数组在内存中是连续存放的,所以可以使用数组指针的方式将二维数组的地址传递给函数,从而在函数中对二维数组进行操作。
2024-04-12 08:00:00
222
1
原创 C语言——数组指针变量
数组指针变量是指向数组的指针,它可以用来遍历数组元素、进行数组操作以及作为函数参数传递数组等操作。在C语言中,数组名本身就是数组的首地址,因此数组指针可以指向数组的首地址。解释:p先和*结合,说明p是一个指针变量,它指向的是一个大小为10个整型的数组。注:[ ]的优先级比*高,所以要先用()来保证*和p先结合。
2024-04-11 21:39:53
182
1
原创 C语言——字符指针变量
这是因为ptr1和ptr2指向的是同一个字符串常量,在C语言中会把字符串常量单独放到一块内存区域,当几个指针指向同一个字符串常量时 ,它们指向的实际是同一块内存。但是,用相同的字符串常量去初始化不同的数组时,会存放到不同的内存区域。字符指针变量是指向字符型数据的指针,也可以说是指向字符串的指针。在C语言中,由于字符串以空字符'\0'结尾,因此字符串通常被视为字符数组,因而可以使用指向字符的指针来对字符串进行操作。然后,我们定义了一个字符指针变量。所指向的字符,直到遇到字符串的结束符号 '\0'。
2024-04-11 20:45:56
371
1
原创 C语言——指针数组
指针数组是一个数组,其元素都是指针类型的变量。换句话说,指针数组存储的是指针变量,这些指针变量可以指向内存中的其它数据。指针数组在C语言中有许多用途,其中最常见的是用于存储字符串数组。每个指针指向一个字符串,而字符串本身则存储在内存中的不同位置。这种方法允许我们在一个数组中存储多个字符串,并且每个字符串的长度可以不同。在上面的示例中,我们首先声明了一个指针数组strArray,该数组包含了三个指针元素。然后,我们分别将这些指针元素初始化为不同的字符串常量。最后,通过循环遍历指针数组,逐个打印出字符串。
2024-04-10 08:30:00
266
1
原创 C语言——二级指针
二级指针(double pointer)是指一个指针变量存储的是另一个指针变量的地址,也就是指向指针的指针。在C语言中,使用二级指针可以实现对指针的简介引用,或者用来修改指针本身所指向的内存地址。二级指针在一些场景中特别有用,比如动态内存分配、多级指针数组等情况下。通过二级指针,我们可以实现对指针本身以及指针所指向的内存地址进行更加灵活的控制和操作。在上面的示例中,我们首先声明了一个整型变量 num,然后声明了一个指针变量。接着,我们声明了一个二级指针变量。
2024-04-10 08:00:00
254
1
原创 C语言——对数组名的理解
在C语言中,数组名可以被理解为指向数组首元素的指针。这意味着,当你使用数组名时,它会被自动转换为指向数组首元素的指针,即数组的第一个元素的地址。运行结果如下图所示:我们需要注意的是:arr和&arr是不同的运行结果如下图所示:通过运行结果我们可以发现:arr+1跳过的是一个整型的字节数&arr+1跳过的是一个数组的字节数。
2024-04-09 21:22:18
1241
1
原创 C语言——指针的使用和传址调用
指针是一个存储变量内存地址的变量,它允许我们直接访问存储在该地址的数据。在C语言中,指针经常用于动态分配内存、传递函数参数、以及在函数之间传递地址等操作。在上面这个例子中,指针ptr存储了变量num的地址,并通过对指针解引用*ptr,我们可以访问到num的值。
2024-04-09 19:38:22
551
1
原创 assert的使用
assert是C语言标准库<assert.h>中定义的一个宏,用于在程序中插入调试断言(assertion)。它可以用于在程序执行过程中对特定条件进行检查,如果条件不满足,则会导致程序立即终止,并输出一条诊断信息。在开发阶段,将assert用于检查假设条件是否成立或者预期的情况是否发生,有助于发现并定位程序中的错误。需要注意的是,在生产环境中,assert中的检查会被关闭(通常通过NDEBUG宏),这意味着assert不会造成程序终止,因此不应该在assert中包含会造成副作用的代码。
2024-04-08 21:28:14
203
原创 C语言——初识指针
指针(Pointer)是编程语言中一种重要的数据类型它,它用于存储变量的内存地址。换句话说,指针指向内存中的某个位置,其内容就是地址,这个地址指向存储的数据,程序可以直接访问和操作内存中的数据,这为动态内存分配、函数传参、数组访问等操作提供了便利和灵活性。总的来说,指针是一种允许直接操作内存地址和数据的数据类型,是实现诸多复杂数据结构和高级编程技术的重要基础。
2024-04-08 20:39:57
1680
原创 C语言——二维数组
二维数组是一种常见的数据结构,在C语言中用于存储和操作二维数据。它可以看作是由多个一维数组组成的数据结构,每一个一维数组都是二维数组中的一行。与一维数组不同的是,二维数组需要两个索引来访问数组中的元素。第一个索引代表行号,第二个索引代表列号。例如,对于一个包含3行4列的二维数组,第二个元素的索引是[0][1],最后一个元素的索引是[2][3]。可以把二维数组想象成一个表格,其中的每一个单元都包含一个特定的数据。在C语言中,可以用二维数组存储各种类型的数据,例如整型、浮点型、字符型。
2024-02-05 17:06:35
344
1
原创 C语言——一维数组
一维数组是C语言中的一种数据结构,用于存储一系列相同类型的元素。它是由连续的内存位置组成的,每一个元素都对应一个唯一的索引值,通过索引可以访问和操作数组中的元素。一维数组可以存储各种类型的元素,例如整型、浮点型、字符等。在声明一维数组时,需要指定元素的类型和数组的大小。数组的大小决定了该数组可以容纳多少个元素。一维数组的索引从0开始,依次递增。通过使用索引,可以访问数组中特定的元素。例如对于一个包含十个元素的整型数组,该数组中的第一个元素索引为0,最后一个元素索引为9。
2024-02-04 23:03:50
648
1
原创 C语言:分支与循环——break和continue语句
C语言在循环执行过程中,如果发送某些突发状况,需要提前终止循环,可以使用break和continue两个关键字来提前结束循环。break适用于永久地终止循环,一旦执行break,会直接跳出循环,继续往后执行。continue适用于跳过本次循环(不执行continue后的语句),转而进行下一次循环。
2024-01-19 18:20:48
440
1
原创 C语言:分支与循环——do while循环
do while循环的执行是直接进入循环体,执行循环语句后,再执行while后的判断表达式,表达式为真,则进行下一次循环,表达式为假,则退出循环。注意:do while中的循环体至少执行一次。练习:输入一个正整数,输出是几位数。
2024-01-18 21:55:52
341
1
原创 C语言:分支与循环——for循环
表达式1初始化循环变量,再执行表达式2进行判断,判断结果为假则结束,判断为真则执行循环语句并执行表达式3调整变量,接着再执行表达式2进行判断,循环往复。注:for循环和while循环在实现循环过程中都有初始化、判断、调整这三个部分,但for循环更加集中,便于代码的维护。注意,在整个循环过程中,变量只被初始化一次,接下来就只有表达式2、循环语句、表达式3在进行循环。练习2:计算1-100之间3的倍数的数字之和。练习1:打印1-10。
2024-01-18 21:31:21
389
1
原创 C语言:分支与循环——while循环
说明:首先判断表达式,如果表达式的值为0,则循环结束,如果表达式的值不为0,则执行循环语句,执行完毕后进行下一次判断,决定是否继续执行语句。举例:循环打印“hello world”。while语句的执行流程,如下图所示。实践练习1:打印1-10的数。实践练习2:逆序打印数字。
2024-01-18 15:50:29
372
1
原创 C语言:分支与循环——switch语句
switch语句是一种特殊形式的if else结构,用于判断条件有多个结果的情况,把多重的else if改为更易用、可读性更好的形式。
2024-01-17 21:10:19
758
原创 C语言:分支与循环——if else
注:if和else默认控制一条语句,如果想要同时控制多条语句,则需要加上大括号将语句括起来。在if else语句中,else可以与另一个if语句连用,构成多重判断。如果有多个if else语句,else语句总是和最近的if语句匹配。说明:如果满足表达式条件(为真),则执行语句1,否则执行语句2。举例:输入一个整数,判断所输入的数是正整数、负整数或是0。如下方代码块所示,最终不会输出结果。举例:输入整数,判断奇偶性。举例:判断是否满十八岁。
2024-01-16 21:18:59
612
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人