自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux系统编程(2)标准IO

标准输入输出库,位置在/usr/include/stdio.hstdio.h-->stdio.c-->libc.so (so动态库文件/usr/lib)FILE 结构定义的对象 FILE * 称之为流对象,也叫文件流指针。FILE*是一个指向结构体的指针。filename:这是一个指向字符串的指针,表示要打开的文件的名称。可以是相对路径或绝对路径。mode"r""r+""w""w+""a""a+"此外,还可以在模式字符串中添加b以表示二进制模式,例如"rb""wb"和"ab"。

2024-08-05 19:51:03 459

原创 Linux系统编程(1):Shell脚本配置

shell是一种解释性语言,本质上是命令解释器shell脚本是实际上是命令合集告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。2.编写脚本3.chmod +x XX.sh 修改程序的执行权限,确保可以被执行。4../XX.shPATHPWDHOME$0$1$#$$1.read:使用read命令从终端读取输入:2. echo:使用echo。

2024-08-03 18:56:24 367

原创 C语言基础(15)链表的删除,插入和共用体,枚举,typedef

删除链表中的尾节点清除链表共用体是一种特殊的数据结构,允许将不同的数据类型存储在同一内存位置。只可以存储一个成员。由于共用体中的所有成员共享同一内存位置,所以修改一个成员会覆盖之前存储的值。枚举是一种用户定义的数据类型,它由命名的整型常量组成。枚举可以为一组相关的常量定义有意义的名称,而不是直接使用数字。枚举中的值实际上是整型值。typedef用于给已有的数据类型定义新的名字,提高代码的可读性和可维护性。定义复杂的结构类型时,typedef也非常有用。

2024-08-02 20:03:40 296

原创 C语言基础(14)结构体和链表

结构体对齐是指编译器在内存中为结构体的各个成员分配内存时,可能会在成员之间插入填充字节,以使每个成员的起始地址都能满足其对齐要求。有头链表(带头结点的链表)是指在链表的开始部分有一个特殊的节点,称为首节点,这个节点不存储有效数据,仅用于指向链表的第一个节点,从而简化链表的操作。2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须能够整除成员的字节数;箭头运算符的左边是指向结构体的指针,右边是结构体的成员。值域是这个节点所携带的数据,指针域存放的是下一个节点的地址。

2024-08-01 18:59:23 871

原创 C语言基础(13)数组指针和函数指针

一个指向指针的指针是一个保存指针地址的变量。定义时需要两个星号(**int x = 10;// 指向int类型的指针// 指向指针的指针。

2024-07-31 19:16:28 223

原创 C语言基础(12)字符指针 万能指针 和动态分配内存

malloc` 用于分配指定大小的内存块,例如 `int *arr = (int *)malloc(5 * sizeof(int));万能指针需要通过类型转换才能指向的数据,例如将 `void *ptr` 转换为 `int *` 类型后再进行指针运算。使用 `malloc` 和 `calloc` 需要检查返回的指针是否为 `NULL` 以确保内存分配成功。它可以指向不同类型的数据,例如 `int`、`float` 或 `char` 等。在实际编程中,万能指针可以提高代码的灵活性和通用性,但使用时。

2024-07-30 19:25:23 418

原创 C语言基础(11)指针的概念和基础用法

而不是变量的副本。这意味着在函数内部对指针所指向的变量进行的修改会影响到原始变量,即通过指针运算可以实现在被调函数中修改主调函数中的内容。当定义一个指针后,既不初始化也不赋值时,指针中的地址为随机值,这种指针称为。函数的返回值类型定义为指针类型时,这个函数就是指针函数。指针是一种用来存放地址的数据类型。:空指针是指不指向任何有效内存地址的指针,通常用。定义一个指针时,*符号是类型说明符,例如,:通过指针访问指针指向的变量。声明了一个指向整数类型的指针。:获取变量的内存地址。指向的地址中的值赋给变量。

2024-07-29 18:17:48 301

原创 C语言基础(10)标识符的作用域和可见性及预处理命令

关键字(将变量的生存期由动态生存期修改为静态生存期)声明的局部变量,它们的生存期也是整个程序运行期间,但作用域仅限于定义它们的函数内。static关键字作用与函数时,意义是限制函数的使用范围,限制该函数只能在本程序.c文件中使用,其他.c文件不能使用。变量的生存期(Lifetime)指的是变量在程序执行过程中从创建到销毁的时间段。具有静态生存期的变量在程序开始执行时被分配,并在程序结束时被销毁。4.在两个或者两个具有包含关系的不同作用域中定义的同名标识符,外层标识符在内层不可见(就近原则)

2024-07-27 19:36:49 304

原创 C语言基础(10)数组作为函数参数传递

sizeof(a)的值为8,因为数组名传递参数时,传递给形参的数组的首地址,地址数据占用8个字节。二维数组在函数声明中,必须明确指定二维数组的列数。如果函数需要使用数组的行数或其他维度的信息,需要显式传递这些大小。由于在被调函数中无法求得数组的占用大小,因此在。sizeof函数实际上是读取数据的数据类型。当二维数组作为参数传递时,虽然整体仍然是二维数组。,其余维度必须指定。

2024-07-26 19:48:37 429

原创 C语言基础(9)函数嵌套调用和递归调用

保护现场指的是在调用一个函数之前,保存当前函数的执行状态,以便在被调用函数执行完毕后能够正确地恢复并继续执行。恢复现场指的是在被调用函数执行完毕返回之后,恢复原来的执行状态,以便继续执行调用函数。函数调用实际上是程序跳转到被调函数的位置执行被调函数后,再返回到主调函数。是内存中的一部分,用于动态分配内存。在函数调用过程中,保护现场和恢复现场是确保程序执行正确性的关键步骤。每次递归调用都会在栈上创建一个新的栈帧,直到达到递归的终止条件。递归调用是特殊的嵌套调用,其中一个函数直接或间接地调用自身。

2024-07-25 20:15:04 267

原创 C语言基础(8)二维数组和函数

返回值通常可以是任何基本数据类型(如整数、浮点数、字符等)返回值的类型在函数定义时指定。C语言中的函数是代码组织和重用的基本单元。但以第1种方法为好,一行对一行,界限清楚。这种赋初值方法比较直观,把第1个花括号内的数据给第1行的元素,第2个花括号。这意味着函数接收到的是实参的副本,而不是实参本身。可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。函数调用时,实参的数量必须与函数定义中的形参。二维数组实际上本质是一维数组的嵌套。内的数据赋给第2行的元素 ……定义函数时没有写返回值类型的。

2024-07-24 20:16:37 749

原创 C语言基础(7)二分查找和字符数组

字符数组通常用于存储字符串。字符串是以字符数组的形式表示,并且以空字符。

2024-07-23 19:29:13 606

原创 C语言基础(6)数组

数组是有序数据的集合。一、一维数组的定义一维数组的定义形式为:​​​​​​​ 类型说明符 数组名 [常量表达式]类型说明符 即数组中存储元素的类型,类型可以是所有的数据类型,唯独不能是viod型数组名要满足标识符条件常量表达式中可以包含符号常量,且为大于等于0的整型。C99规定常量表达式中可以是变量,使用变量规定数组长度时,数组不能被初始化。注意点:数组不能进行整体赋值数组名代表数组元素的首地址。数组不能越界访问数组之外的元素、不存在的元素。

2024-07-22 20:07:53 619

原创 C语言基础(5)循环控制

当省略表达式3时,即没有使循环趋于结束的条件,此时,当循环的判断条件为真时,循环也会成为死循环。do......while循环先执行一次循环体然后再判断循环条件是否满足,满足循环条件则继续循环,不满足则退出循环。当表达式2的值为真时,执行循环体,并循环体的最后执行表达式3:使循环趋于执行的条件。当省略表达式2时,即不判断循环条件,循环成为死循环。语句之后首先计算控制表达式3,然后测试控制表达式2,如果值为真则继续执行下一次循环。表达式2为循环条件;语句终止当前循环后又回到循环体的开头准备执行下一次循环。

2024-07-20 18:30:13 234

原创 C语言基础(4)选择结构设计

关系表达式的值是一个逻辑值,即 “真” 和 “假”,在C语言中,非零即为真,0为假。else总是与它上面的最近的未配对的if配对。高内聚(High Cohesion)指的是一个模块或类的内部元素紧密相关,完成单一的任务或功能。条件满足时该执行的语句;低耦合(Low Coupling)指的是模块或类之间的依赖关系尽量减少,彼此独立运作。​ 逻辑与:如果左边的表达式的结果为假,那么右边的表达式就不再计算.​ 逻辑或:如果左边的表达式的结果为真,那么右边的表达式就不再计算.

2024-07-19 19:17:28 240

原创 C语言基础(3)

缓冲区:实际上是一段内存空间 类型为队列,原则是FIFO(先进先出),当低速设备遇到高速设备时,低速设备的输入会存入缓冲区,由高速设备统一进行取出,例如,键盘输入数据,键盘输入的数据会存入缓冲区,由CPU统一取出,这样可以有效解放CPU资源,避免造成CPU资源浪费。scanf函数无法根据地址判断变量所占的字节数,因此,格式化字符很重要,%d -int,%ld-long。C语言本身不提供输入和输出语句,输入和输出的操作是通过调用系统库函数中的输入输出函数来实现的。返回值为 int型 ,形参为字符指针常量。

2024-07-18 17:50:13 833

原创 C语言基础(2)

char、short类型的数据会自动转换为int类型,float类型数据会自动转换成double类型。1.当double类型数据赋值给 int数据类型时,原数据的小数部分会被截断。通过强制类型转换运算符(类型)可以将一个类型的变量或者表达式,转换为另一个类型的数据。2.当int型数据赋值给short型数据时,会将原数据的高位截断。左值大多数为变量,左值可以通过取地址符&来获取其地址,右值为数据,右值不能通过&获取地址。是最后一个表达式的值。单纯的希望变量进行自增操作,用++i的效率比i++的效率高。

2024-07-17 17:41:42 251

原创 C语言基础

计算机会给它分配一个4字节的对应的内存空间,用来存放其对应的值,修改变量的值其实就是修改变量对应内存空间中存放的值,变量存放在RAM中,RAM的读写速度快,但是断电后数据会丢失。对于CPU,现有的CPU有32位和64位的,对于32位的CPU,它的寻址范围为2^32 = 4GB,64位CPU寻址范围为2^64=8GB。尾数:看规范化后的式子,小数部分是1001,这个就是尾数位了,但由于这个尾数部分总共有23位,所以还要在后面补19个0。整型溢出:当存储的值超过了int类型的最大表示范围时,就会发生溢出。

2024-07-16 17:56:10 791

原创 vi/vim的基本使用

首先,当用户输入指令进行vi编辑器时,会默认进入命令模式,此时按下键盘上的【I】键可以进入编辑模式,此时可以对文件内容进行修改。修改完成后,按下【ESC】键可以返回到命令模式,然后输入命令【:wq】可以保存并退出文件,至此内容编辑和保存完成。gcc main.c -o main.out 编译main.c文件生成main.out目标文件。命令模式:此模式下用户在键盘输入的一切都会被识别为命令,会执行对应的命令。当main文件不存在时,vi和vim命令会自动创建该文件。例如:vi main。

2024-07-15 18:03:04 161

原创 linux基础

option是选项(必须以-开头才能识别为选项)argument为参数,即命令作用的对象。选项: -a 显示所有文件和文件夹(包含隐藏文件和隐藏文件夹)-l 显示所有文件和文件夹的详细信息。绝对路径:包含有根目录信息的目录表示方法,即完整的路径。相对路径:不包含根目录的目录表示方法,即不完整的路径。功能:列出当前工作目录下的文件和文件夹。功能:复制/重命名 文件或者文件夹。选项:-f 强制删除文件,不提示。选项:-r 递归复制文件夹。选项:-r 递归移动文件夹。功能:删除文件或者文件夹。

2024-07-15 15:29:25 114

空空如也

空空如也

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

TA关注的人

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