C语言
索隆没带刀
C语言
展开
-
C语言树数据结构
节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一棵树中,最大的节点的度称为树的度;节点的层次:节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;树的深度:树中节点的最大层次;叶节点:度为0的节点。二叉树:是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树有n个节点的完全二叉树,若从上往下,从左到右,从0开始给节点编号,那么:若结果大于n,则无左孩子。若结果大于n,则无右孩子。原创 2023-09-18 12:00:39 · 207 阅读 · 0 评论 -
C语言实现单向链表
【代码】C语言实现单向链表。原创 2023-09-18 11:43:31 · 51 阅读 · 0 评论 -
C语言实现队列
定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(tail)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的实现适合用链表结构,因为队列不需要随机访问,并且队列大小不确定;原创 2023-09-13 14:38:18 · 41 阅读 · 0 评论 -
C语言++a和a++
a++和++a都是函数调用,都有返回值,a++的返回值是a自加之间的值;++a的返回值是该变量的引用,不是具体的值;a++是先将a赋值到一个临时空间,再将a+1赋值给临时变量,等运算结束后再返回临时变量给a;++a是直接对a进行a = a + 1赋值,不需要开辟临时空间;原创 2023-09-13 14:27:30 · 1695 阅读 · 0 评论 -
C语言短路求值
也就是判断语句里且&&与或||的逻辑。原创 2023-09-13 14:20:31 · 67 阅读 · 0 评论 -
C语言左值和右值
定义:左值是等号左边的变量或表达式,一般来说值可以改变;右值是等号右边的变量或表达式,特点是可读;一般左值可以作为右值,但右值不能作为左值;原创 2023-09-13 14:18:02 · 194 阅读 · 0 评论 -
C语言内联函数
定义:一般函数调用过程,保存当前调用命令地址,程序流跳转到调用函数位置执行,最后跳转回保存的命令地址继续执行;对于经常调用的短小函数,这样就会降低程序效率;所以inline关键字告诉程序,在调用内联函数时,直接将函数的机器码插入到调用位置,这样程序执行更有效率。内联函数默认是被static修饰的,在每个用到内联函数的翻译单元中,都必须重复定义这个内联函数,所以一般在头文件定义。inline 修饰符并非强制性的:编译器有可能会置之不理。原创 2023-09-13 14:15:27 · 68 阅读 · 0 评论 -
C语言常见预处理命令
ifndef (或#ifdef)宏名 //宏名一般格式: __头文件名 _ H。表达式1为假,表达式2为真。#elseif 表达式2。原创 2023-09-13 14:21:00 · 76 阅读 · 0 评论 -
C语言指针作为函数参数
如果函数内不修改作为形参的指针的指向的情况下,就修改指针所指向的内容,那么就会影响传递过来的指针;原创 2023-09-13 12:51:22 · 75 阅读 · 0 评论 -
C语言二维数组
【代码】C语言二维数组。原创 2023-09-13 12:48:27 · 38 阅读 · 0 评论 -
C语言一维数组和指针
【代码】C语言一维数组和指针。原创 2023-09-13 12:16:56 · 42 阅读 · 0 评论 -
C语言指针的运算
指针减指针:一般用于同一个数组,测量两个元素的距离;这个距离不是以字节为单位,是以元素类型的长度为单位。计算结果为1,但是其地址已经指向a[1]了,只是因为是后++,是返回计算前的值。指针加1,不是地址加一个字节,要看指针指向的类型,加一个类型的长度。1再自增,所以结果为2,p指向的还是a[0];先执行++p,所以p指向的是a[1];*和++运算优先级一样,结合性是从右到左;指针加指针:指针之间不能进行加法运算。计算结果为1,p指向的还是a[0];二级指针:指向指针的指针。原创 2023-09-13 12:12:17 · 49 阅读 · 0 评论 -
C语言函数指针和指针函数
指针函数:返回值是指针的含税。函数指针:指向函数的指针变量。原创 2023-09-13 12:01:27 · 29 阅读 · 0 评论 -
C语言堆和栈
堆空间分配过程:操作系统有一个记录空闲内存地址的链表,申请堆空间时系统会遍历该链表,找到第一个大于或等于申请大小的空间,将此空间从链表删除,并分配给程序变量;由于找到的堆节点的大小不一定正好等于申请的大小,系统会自动地将多余的那部分重新放入空闲链表。显然,堆的效率比栈要低得多。一般指堆内存泄漏,一般由于分配内存后未释放造成,或者指向申请的内存指针又指向了另外的空间,导致找不到之前申请的内存;栈的内存地址生长方向由高到底,所以后定义的变量地址低于先定义的变量。每个进程拥有的栈的大小要远远小于堆的大小。原创 2023-09-13 11:56:47 · 65 阅读 · 0 评论 -
C语言常见关键字
就是错误的,因为声明不会分配地址,也就不能赋值;作用:告诉编译器该变量是容易发生变化的,不能对该变量进行优化,每次取值都必须从内存中去取,不可去之前取值的寄存器去取;在一个文件中需要应用其他文件中定义的函数或变量,就可以在文件中通过extern声明所需函数或变量,在链接阶段起作用;如:在a文件需要引用b文件的int val变量,就可以在a文件用到val变量之前extern int val;如果修饰的是个全局变量(已初始化),存放在只读数据段(未初始化的存放在bss段),该变量不可以被指针修改。原创 2023-09-13 11:49:58 · 38 阅读 · 0 评论 -
C语言三目运算符
表达式b : 表达式c;如果表达式a值为1,执行表达式b;如果表达式a值为0,执行表达式c;原创 2023-09-13 10:43:32 · 31 阅读 · 0 评论 -
C语言 源码、反码、补码
正数的源码、补码、反码一样负数的反码,符号位不变,其余位对源码取反负数的补码,符号位不变,其余位对源码取反加1举例:(八位)1的:源码:0000 0001 (0x01)反码:0000 0001 (0x01)补码:0000 0001 (0x01)举例:(八位)-1的:源码:1000 0001 (0x81)反码:1111 1110 (0xFE)补码:1111 1111 (0xFF)原创 2023-09-13 11:08:44 · 485 阅读 · 0 评论