![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 57
Ljw...
这个作者很懒,什么都没留下…
展开
-
操作符的优先级
原创 2024-05-26 14:29:40 · 117 阅读 · 1 评论 -
队列数据结构
FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。队列也可以数组和链表的结构实现,原创 2024-06-05 11:16:37 · 1004 阅读 · 12 评论 -
顺序表数据结构
1.线性表1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表。原创 2024-06-04 12:50:58 · 604 阅读 · 28 评论 -
学生信息管理系统(静态版)
学生信息管理系统(静态版)原创 2024-05-29 08:07:37 · 653 阅读 · 4 评论 -
结构体知识点
1.结构的声明1.结构的声明。原创 2024-05-27 10:12:19 · 277 阅读 · 13 评论 -
动态内存管理
• 数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整 但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知 道,那数组的编译时开辟空间的⽅式就不能满⾜了。• 有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的使 ⽤内存,我们⼀定会对内存的⼤⼩做灵活的调整。• 如果参数 ptr 指向的空间不是动态开辟的,那free函数的⾏为是未定义的。• 这个函数调整原内存空间⼤⼩的基础上,还会将原来内存中的数据移动到 新 的空间。原创 2024-05-26 14:25:10 · 561 阅读 · 2 评论 -
memmove使⽤和模拟实现
• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。• 如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。输出的结果:1 2 1 2 3 4 5 8 9 1。这是memmove在库里的定义,具体可在。二:memmove的模拟实现。原创 2024-05-25 12:03:37 · 316 阅读 · 3 评论 -
qsort的使用和模拟实现
这是memmove在库里的定义,具体可在查看二:使⽤qsort排序结构数据先定义一个结构体1:假 设 按 照 年 龄 来 比 较2:strcmp - 是 库 函 数 , 是 专 门 用 来 比 较 两个 字 符 串 的大 小 的,假 设 按 照 名 字 来 比 较3:用qsort调用以上函数进行快排三:模拟使用使⽤回调函数,模拟实现qsort(采⽤冒泡的⽅式)。注意:void*有讲解。原创 2024-05-25 11:50:26 · 432 阅读 · 1 评论 -
strcmp的使⽤和模拟实现
如果两个字符串的前n个字符都相同,但其中一个字符串的长度小于n(也就是说,一个字符串提前遇到 \0结束符),那么strncmp` 会将较短的字符串视为“较小”的字符串。如果 s1 的前 n 个字符在字典顺序上小于 s2 的前 n 个字符,或者 s1 是一个较短的字符串(即 s1 在 n 个字符内遇到 \0),返回一个负数。如果 s1 的前 n 个字符在字典顺序上大于 s2 的前 n 个字符,或者 s2 是一个较短的字符串(即 s2 在 n 个字符内遇到 \0),返回一个正数。三:strncmp函数的使用。原创 2024-05-24 17:08:00 · 555 阅读 · 1 评论 -
有序的一维数组中插入一个整数并保持其有序性
在C语言中,要在已排序的一维数组中插入一个整数并保持数组的有序性,你需要首先找到插入点的位置(即该整数应该插入的位置),然后将该位置及其后的所有元素向后移动一个位置,以便为新元素腾出空间。在insertIntoSortedArray函数中,我们通过一个循环找到新元素应该插入的位置,并将该位置及其后的所有元素向后移动一个位置。insertIntoSortedArray函数接受一个指向数组的指针arr,一个指向当前数组大小的指针size,以及要插入的整数num。使用指针遍历数组,找到新元素应该插入的位置。原创 2024-05-24 17:04:10 · 875 阅读 · 4 评论 -
memcpy的使⽤和模拟实现
这是memcpy在库里的定义,具体可在查看•num单位是字节,下面的模拟实现需要强制类型转换•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。• 这个函数在遇到 '\0' 的时候并不会停下来。• 如果source和destination有任何的重叠,复制的结果都是未定义的。对于重叠的内存,交给memmove来处理。(下期会有)memcpy的使⽤的代码void和void*的用法已经发布。原创 2024-05-23 13:07:42 · 1236 阅读 · 7 评论 -
void和void*
然后,它将value存储在新分配的内存中,并返回一个指向该整数的指针,但指针的类型是void*。是的,在C语言中,函数名定义为返回void*类型确实可以返回值。void*是一个特殊的指针类型,被称为通用指针或空指针,它可以指向任何类型的数据。因此,当函数被定义为返回void*类型时,它可以返回一个指向任何类型数据的指针。void* 类型的指针本身是一个地址,不能直接打印为具体的值,因为它不指向一个具体的类型。如果你需要函数返回某种类型的数据,那么你应该在函数定义中指定返回类型,而不是void。原创 2024-05-23 13:03:01 · 467 阅读 · 1 评论 -
辗转相除法
递归性质:对于任意两个正整数a和b(a>b),它们的最大公约数等于b和a除以b的余数r的最大公约数。需要注意的是,虽然辗转相除法在处理大数时可能会比较慢(因为其时间复杂度为O(log(min(a,b)))),但它仍然是一个非常重要的算法,因为它不仅简单易懂,而且在实际应用中具有广泛的应用,如密码学、线性代数等领域。整除性质:如果两个整数a和b的最大公约数是d,那么对于任何整数k,a和b的线性组合ax+by(其中x和y是整数)也能被d整除。初始化两个整数a和b,其中a是较大的数,b是较小的数。原创 2024-05-21 12:33:54 · 324 阅读 · 4 评论 -
约瑟夫环问题
约瑟夫环问题是一个很经典的问题:一个圈共有N个人(N为不确定的数字),按顺序第一个人的编号为1,第二个人的编号为2,第三个人的编号就为3,以此类推第N个人的编号就为N,现在提供一个数字K,从第一个人开始报数(从1到K),依次类推,报到M这个数字的人出局,紧接着从出局的这个人的下一个人重新开始从1报数,和上面过程类似,报到K的人出局,直到N个人全部出局,请问,这个出局的顺序是什么?,6号出局之后,要从出局的这个人(6号)的下一个未出局的人(7号)重新开始从1开始报数,所以7号从1开始继续报数,那么,原创 2024-05-21 12:32:19 · 1337 阅读 · 6 评论 -
c语言格式化输出
注意,当使用%p来输出指针时,通常需要将指针转换为(void*)类型,以避免类型不匹配的警告或错误。在C语言中,格式化输出通常使用printf函数,它允许你指定一个格式化的字符串和一系列参数,然后按照指定的格式输出到标准输出(通常是终端或控制台)。格式说明符以%开头,后面跟着一个或多个字符,用于指定如何输出后续的参数。如果输出的数据宽度小于这个值,则使用空格进行填充(除非使用了其他填充字符)。根据浮点数的大小自动选择%f或%e格式,但不输出无意义的零。输出一个指针的值,通常显示为十六进制格式。原创 2024-05-20 23:04:09 · 325 阅读 · 2 评论 -
二维数组和一维数组
在上面的例子中,matrix 是整个二维数组的名称,它的类型是一个有3个元素的数组,每个元素是一个有4个int的数组。这个指针的类型是指向数组的指针,其中数组的元素是另一种类型的数组。虽然二维数组的地址在概念上指向其第一行,但在实际使用中,我们通常通过指向数组元素的指针来访问二维数组的元素,而不是直接通过指向数组的指针。当我们说“一维数组的地址”时,我们通常指的是数组第一个元素的地址。一维数组的地址是一个指向其元素类型的指针,而二维数组的地址是一个指向数组的指针,其中数组的元素是另一种类型的数组。原创 2024-05-18 20:16:29 · 205 阅读 · 4 评论 -
char arr和int arr的区别
int arr`:这是一个整数数组,`arr` 中的每个元素都是 `int` 类型,用于存储整数数据。`char arr`:因为 `char` 类型通常是1个字节,所以整个数组 `arr` 的内存占用将取决于它包含的元素数量。`int arr`:由于 `int` 类型通常是4个字节,`arr` 的内存占用将是元素数量的4倍。对于 `char arr`,你通常会使用C语言的字符串函数,如 `strlen`, `strcpy`, `strcat` 等来处理字符数组。`,编译器会自动添加终止的空字符。原创 2024-05-18 19:54:14 · 422 阅读 · 1 评论 -
指针小总结
根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀ 维数组的地址。根据上⾯的例⼦,第⼀⾏的⼀维数组的类型就是 int [5] ,所以第⼀⾏的地址的类 型就是数组指针类型 int(*)[5]。parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。• &数组名,这里的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)//数组的每个元素是int*。原创 2024-05-17 21:24:11 · 946 阅读 · 7 评论