C语言
文章平均质量分 74
默默进步---一鸣惊人
勤思考多动手
展开
-
数据结构之二叉树的创建
创建二叉树首先定义相关结构体及其他变量#define BT_LEFT 0 // 左边#define BT_RIGHT 1 // 右边// 定义新数据类型,用于封装函数typedef void BTree;typedef unsigned long long BTPos;// 定义二叉树左右指针结构体typedef struct _tag_BTreeNode BTreeNode;struct _tag_BTreeNode{ BT...转载 2021-05-07 20:31:15 · 4444 阅读 · 0 评论 -
C语言指针剖析一:指针的声明与访问
一:指针的声明与访问前言在计算机中,所有的数据都是存放在存储器中的,一般把存储器的一个字节称为一个内存单元。不同的数据类型占用的内存单元是不同的。为了快速、准确的访问这些内存单元,计算机为每一个内存单元进行编号,内存单元的编号也就是内存单元的地址。C 语言中,把这个地址叫做指针。1:指针的定义指针的定义:指针是一种数据类型,基于该类型声明的变量称为指针变量,该变量存放的是内存中的某个地址,指针的声明:类型 * 指针变量名;//如 int * pNum;“*”表示语句声明的是一..原创 2020-11-30 21:44:05 · 726 阅读 · 0 评论 -
signed、unsigned 关键字
目录前言实例前言我们知道计算机底层只认识 0、1.任何数据到了底层都会变计算转换成 0、1.那负数怎么存储呢?肯定这个“-”号是无法存入内存的,怎么办?很好办,做个标记。把基本数据类型的最高位腾出来,用来存符号,同时约定如下:最高位如果是 1,表明这个数是负数,其值为除最高位以外的剩余位的值添上这个“-”号;如果最高位是 0,表明这个数是正数,其值为除最高位以外的剩余位的值。这样的话,一个 32 位的 signed int 类型整数其值表示法范围为:- 231~ 231 -1;8 位原创 2020-11-22 10:27:16 · 454 阅读 · 2 评论 -
c++函数重载
每天进步一点点,时刻保持学习的状态目录1:普通函数重载2:成员函数重载3:函数参数带默认值4:构造函数重载5:复制构造函数6:构造函数和 new 运算符7:默认构造函数8:析构函数和 delete 运算符9:浅层复制构造函数10:深层复制构造函数1:普通函数重载将一个相同名字但是不同类型的函数重复重复调用多次,来处理不同类型的数据。2:成员函数重载用对象 分别访问并调用带参数和不带参数的 成员函数,编译器将根据参数的不同而自动调用不同的函数.原创 2020-10-26 22:25:00 · 156 阅读 · 0 评论 -
c++引用调用
目录1:什么是引用2:函数的参数传递3:传递对象4:总结1:什么是引用引用就是别名,如:int &rnum = num;rnum 是整型变量 num 的别名,这样,对 rnum 的操作实际就是对 num 的操作。&rnum的值&num的值(地址)是一样。注意:定义引用时一定要同时对该引用进行初始化,如:int a;int &b = a;而不能写成int a;int &b;b = a;这样是错误的。引用就如原创 2020-10-25 11:43:10 · 2163 阅读 · 1 评论 -
char, unsigned char, int,unsigned int之间的相互转换
最近写代码的时候发现一个问题,我有一个数据是放在两个寄存器中的,一个表示高8位,一个表示低八位,我的这个数据是有符号的,那我在算出数据的时候就需要把两个寄存器的值进行合并了,这样就需要把数据从char 转换到short类型了。现在假定我有两个char型数据ch1,ch2。需要把结果写入一个short型的数据data。假定ch1为低8位数据,ch2为高8位数据最开始我是这样写的:data...原创 2018-12-01 23:45:21 · 19658 阅读 · 0 评论 -
c语言的特殊结构 《位域》
C语言提供了一种数据结构,称为“位域”或“位段”。位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。 位域定义与结构定义相仿,其形式为:...原创 2018-11-20 21:38:44 · 271 阅读 · 0 评论 -
c语言中处理不定参数
c语言中处理不定参数数目在进程中,堆栈地址是从高到低分配的.当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减,一些黑客就是在堆栈中修改函数返回地址,执行自己的代码来达到执行自己插入的代码段的目的.在函数调用时,第一个进栈的是主函数中的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个...原创 2018-11-20 21:28:53 · 430 阅读 · 0 评论 -
C内存简析
1:内存分配32位操作系统支持4GB内存的连续访问,但通常把内存分为两个2GB的空间,每个进程在运行时最大可以使用2GB的私有内存(0x00000000—0x7FFFFFFF)。至于高端的2GB内存地址(0x80000000—0xFFFFFFFF),操作系统一般内部保留使用,即供操作系统内核代码使用。每个进程都能看到自己的2GB内存以及系统的2GB内存,但是不同进程之间是无法彼此看到对方的。原创 2017-09-21 08:36:08 · 376 阅读 · 0 评论 -
C语言位域
C语言提供了一种数据结构,称为“位域”或“位段”。位域是指信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。 位域定义与结构定义相仿,其形式为原创 2017-09-10 16:20:10 · 320 阅读 · 0 评论 -
从C语言不定参数列表到函数调用的入栈方式
在进程中,堆栈地址是从高到低分配的.当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减,根据内核的不同,函数调用的参数,并不是全部入栈的,X86中会将前6个参数放到指定的寄存器中,从第7个参数餐开始入栈(这里我们假定参数都入栈)在函数调用时,第一个进栈的是主函数中的下一条指令(函数调用语句的下一原创 2017-09-15 10:30:24 · 450 阅读 · 0 评论 -
C语言字符移位过程
如果位移动的数目大于或等于它本身存储位数,即对一个char型变量进行大于或等于8次的左移或右移操作,若原变量是正数,则结果必为0;若原变量是负数,则其结果必为-1。(前提是移位后还赋值给char型变量)今天无意中发现一个问题,一个char型的数据经过左移8位后若直接赋值给一个short或者int类型的话会自动保存左移后的正常值,而赋值给char型的话就是0x00。char Dat原创 2017-09-05 10:42:44 · 3809 阅读 · 1 评论