自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 双向链表练习

创建doulink.h doulink.c main.c。

2025-08-05 20:12:45 138

原创 单向链表练习

摘要:本文介绍了使用valgrind工具检测内存泄漏的方法,并提供了链表操作的C语言实现。主要内容包括:1. 快慢指针法查找链表中间节点;2. 查找倒数第K个节点的算法;3. 链表逆序实现;4. 链表插入排序实现。这些算法均基于指针操作,通过快慢指针同步移动、头插法逆序以及比较插入等方式实现链表的高效处理,同时考虑了边界条件处理。

2025-08-04 23:59:01 491

原创 C语言与数据结构:从基础到实战

散列结构(哈希结构):将数据的存储位置与数据元素之间的关键字建立起对应的关系(哈数关系),根据该关系进行数据存储和查找。数据访问必须从头遍历(o(n)),插入和删除元素方便,不需要预内存分配,是一种动态存储的方式。线性结构:数据元素与元素之间存在一对一的关系(顺序表,链表,队列,栈)索引结构:将要存储的数据的关键字和存储位置之间构建一个索引表。图形结构:数据元素与元素之间存在多对多的关系(网状结构)树形结构:数据元素与元素之间存在一对多的关系(二叉树)(1)逻辑关系:数据元素与元素之间的关系。

2025-08-03 23:36:34 468

原创 深入解析C语言动态内存分配与函数指针和二级指针和指针数组

(3)释放后指针变为野指针:内存被释放后,原指针仍指向该地址,继续使用该指针会导致错误,因此释放后将指针置为 NULL。注意事项:(1)分配的内存未初始化,内存中是随机值。初始化内存:calloc 会将分配的内存全部初始化为 0,而 malloc 分配的内存是未初始化的(存储随机值)。函数指针是指向函数的指针变量,它存储的是函数在内存中的起始地址,通过函数指针可以间接调用对应的函数。数组名表示数组的首地址,其类型为“指向指针的指针”(如int *arr[5]中,arr的类型是int **)。

2025-07-30 21:35:09 920

原创 【无标题】

const修饰的指针的本意是无法修改指针指向的变量的数据。const修饰普通变量:约束“变量的值”,限制变量的值不能被修改。const修饰指针变量:约束“指向的内容”或者“指针本身”,1. 常量指针(const修饰指针指向的内容)形式:const 数据类型 *指针名含义:指针指向的内容是常量,不能通过指针修改所指向的内容,但指针本身可以指向其他地址。2. 指针常量(const修饰指针本身)形式:数据类型 *const 指针名。

2025-07-29 21:22:43 1030

原创 指针运算全攻略:加减、比较与排序

快速排序是一种高效的排序算法,基于“分治法”思想,通过选取一个基准元素,将数组分为两部分(小于基准和大于基准),再递归排序两部分。其结果依旧是一个是一个指针,新的指针是在原来的地址值基础上加上/减去n *(sizeof(指针指向的数据类型))个字节。2. 分区(partition):将数组中小于基准的元素放在基准左边,大于基准的元素放在右边(等于基准的元素可放任意一侧)。,结果为(p1地址 - p2地址) / sizeof(指针类型),即元素个数差。指针和指针之间可以进行减法运算,但是要保证两种(

2025-07-28 21:10:01 597

原创 C语言作用域与生存期详解

二维数组作为函数参数传递需要两个参数(int a[ ][4] int rows)

2025-07-25 22:19:25 169

原创 【无标题】

步骤大致为:(1)首先将函数的返回地址(即函数执行结束后要回到的原程序位置)压入栈中,确保函数执行完能正确返回。程序计数器(Program Counter,简称PC) 是计算机处理器中的一个重要寄存器,主要功能是存储下一条要执行的指令在内存中的地址。该程序输出结果为30,因为在C语言中,函数参数的传递是值传递特性(只是将实参的值传递给形参,而并没有把实参本身传递给形参)。注意:栈区的大小在程序运行前通常是固定的,如果分配的数据超过栈区容量,会导致“栈溢出”错误(如递归调用过深)。

2025-07-24 21:02:31 792

原创 二维数组详解:定义、引用与实战

返回值类型 函数名(形式参数列表)// 函数体:实现功能的代码return 返回值;// 与返回值类型匹配返回值类型:函数执行后返回的数据类型(无返回值用void)。函数名:自定义名称,遵循标识符规则。形式参数列表:函数接收的输入(格式:类型 参数名,多个参数用逗号分隔,无参数可写void)。例如,计算两数之和。int ret;return ret;输入一个数的范围,输出范围内所有能被3整除的数。int i;i <= end;++i)

2025-07-23 22:07:23 575

原创 C语言字符数组操作全指南

定义:指定数组类型为char,并指定长度,例如:char s[10];(定义一个可存储10个字符的数组)。初始化:逐个字符初始化:char s[5] = {'h', 'i', '\0'};(未初始化的元素会默认设为'\0')。字符串常量初始化:char s[] = "hello";(系统会自动在末尾添加'\0',数组长度为6)。字符数组与字符串的关系字符串是特殊的字符数组,必须以'\0'结尾,用于标记字符串结束。字符数组可以不含'\0',此时仅作为普通字符集合,而非字符串。注意事项。

2025-07-22 18:29:31 303

原创 一维数组入门:定义与操作全解析

本文介绍了C语言中一维数组的定义、引用、初始化和基本操作。一维数组通过数据类型、数组名和长度定义,元素连续存储且类型相同。数组初始化支持完全、部分和自动长度确定等方式。常用操作包括查找最大值/次大值和元素逆序。文章还讲解了三种排序算法:选择排序(时间复杂度O(n²),不稳定)、冒泡排序(最好O(n),稳定)和插入排序(原地排序,稳定),并提供了相应的代码实现示例。这些基础操作是处理数组数据的核心方法。

2025-07-21 20:57:01 1008

原创 【无标题】

补充前一天的知识3三目运算符条件运算符要求有三个操作对象,也叫三目运算符,它是 C 语言中唯一的一个三目运算符。?运算逻辑:先判断“表达式1”的结果。若结果为真(非0),则执行“表达式2”,并返回其结果。若结果为假(0),则执行“表达式3”,并返回其结果。它的作用相当于简化的if-else语句,适合简单的条件判断场景,能让代码更简洁。该程序输出abc中的最大值,输出30.

2025-07-19 17:27:59 771

原创 C语言中关系运算符、逻辑运算符、if语句、switch语句解析

是一个类型,表示当int i = 12;int j = 45;时,此时返回值为2,输出12 + 45 = 57在缓冲区会出现当int i = 12;时,输入的 j 不是整数,程序会陷入不断的打印错误错误提示此时的返回值ret是1而不是2,从而进入while(ret!= 2),此时缓冲区此时12读取成功,所以i= 12,但是失败的abc会残留在输入缓冲区中,下次循环中 scanf 又会再次读取到这些无效字符,导致又一次失败。形成无限循环。解决办法:使用getchar函数清除缓冲区的残留字符。

2025-07-18 21:04:04 824

原创 C语言输入输出函数详解

(2)&a, &b,&c中的“&”是地址运算符,&a指a在内存中的地址。成功读取字符时,返回该字符的 ASCII 码值。double:指定传入函数的参数类型为双精度浮点数,且必须是非负值(若为负数,结果通常为 NaN,即“非数字”)。功能:输出参数c所代表的字符(c实际上是字符的ASCII的码值,字符会被自动转换为对应整数)返回值类型 int:表示成功输出的字符总数(包括转义字符,如 \n),若输出失败则返回负数。返回值类型是int:成功输出字符时返回输出的字符(以ASCII码的整数形式)。

2025-07-17 22:47:17 1093

原创 C语言编程基础:转义字符与运算符

本文摘要:本文系统介绍了C语言中的转义字符、变量初始化、数据类型转换、运算符等内容。重点讲解了常用转义字符的功能和输出效果,变量初始化的必要性,数据类型的隐式和显式转换规则,算术运算符的优先级和使用注意事项(特别是求余运算符%的特性),以及赋值运算符的类型转换规则。还详细说明了自增/自减运算符i++和++i的本质区别,以及不同数据类型间的赋值转换机制,包括字符型与整型的转换、浮点型与整型的转换等基本概念。

2025-07-16 23:35:18 1004

原创 C语言编程基础:常量和变量 数据类型

基础语法面向过程的编程思想RAM:随机存取存储器(易失性存储器)断电后数据丢失ROM:只读存储器(非易失性存储器)断电后数据能保存字节是描述容量的最小单位8Bit(比特=1Byte(字节) 1024B=1KB 1024KB=1MB 1024MB=1GB。

2025-07-15 22:31:53 808

原创 学习嵌入式的第一天

使用vi创建一个文本,进入后默认为命令模式,可执行光标移动、删除、复制等操作。嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求灵活裁剪软硬件模块的专用计算机系统。今天首先认识了嵌入式的基本概念和发展历程,还学习了常用Linux命令行的使用。1.ls:列出当前工作目录的文件和目录。除了工作目录,我们也可以指定目录。Linux中一旦使用rm命令,就彻底删除了,无法还原。“."表示工作目录,“..”表示工作目录的父目录。相对路径:从工作目录开始。5.rm:删除文件或目录。

2025-07-14 22:47:18 103

空空如也

空空如也

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

TA关注的人

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