C语言编程
houxiaoliwang
这个作者很懒,什么都没留下…
展开
-
数据大小端转换
1、unsigned short int 类型数据的转换方法一:unsigned short int num;unsigned short int numChange = num/256+num%256*256方法二:unsigned short BLEndianUshort(unsigned short value){return ((value & 0x00...转载 2019-11-05 16:14:42 · 2911 阅读 · 0 评论 -
C++中不能声明为虚函数的有哪些函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。1.为什么C++不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层函数不属于成员函数,是不能被继承的2.转载 2017-01-07 17:09:57 · 218 阅读 · 0 评论 -
C语言数据类型存储位置及堆栈说明
一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) 般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表3、全局区(静态区)(static)转载 2017-01-07 09:24:51 · 1297 阅读 · 0 评论 -
常见关于二叉树的问题(1)
问题1:计算一共有多少个节点。运用递归思想,迭代计算出结点个数。问题2:计算二叉树的深度。循环求解的思想,层层计算,每次向下一层,直至到底。问题3:三种遍历二叉树,先序遍历,中序遍历,后序遍历。都是运用的递归思想,经典的算法。转载 2016-12-12 18:05:50 · 560 阅读 · 0 评论 -
常见关于二叉树的问题(2)
二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的个数、求二叉树的高度、求二叉树中两个节点的最近公共祖先、打印和为某一值的全部路径、求某一节点是否在一个树中等等。再详细的说这些面试题之前,不妨先转载 2016-12-12 17:39:54 · 443 阅读 · 0 评论 -
常见链表问题
题目列表:1. 求单链表中结点的个数2. 将单链表反转3. 查找单链表中的倒数第K个结点(k > 0)4. 查找单链表的中间结点5. 从尾到头打印单链表6. 已知两个单链表pHead1 和pHead2 各自有序,把它们合并成一个链表依然有序7. 判断一个单链表中是否有环8. 判断两个单链表是否相交9. 求两个单链表相交的第一个节点10. 已知一个单链表中转载 2016-12-12 14:55:27 · 371 阅读 · 0 评论 -
事件过滤方法
方法一:定时器思想:在定时器初始运行时不设定时间,当发生某一事件时触发定时器,设置其多长时间后运行定时器函数且只运行一次,在频繁发生某一事件时重置定时器,会过滤掉时间间隔小于我们所设定值的事件,且能保证最后一次事件被执行简单代码说明:代码请参考本人的另一篇博文定时器中的内容说明:该方法确保最后一次事件能够执行方法二:应用两次事件发生时的时间差原创 2016-11-17 16:06:14 · 599 阅读 · 0 评论 -
常见排序算法
目录前言冒泡排序选择排序插入排序快速排序归并排序堆排序希尔排序基数排序参考资料前言排序算法在笔试面试中几乎是必考的,因为它是很多复杂算法的基础,也是我们学习数据结构与算法的入门知识。目前网上介绍各类排序算法的博客和帖子非常多,但其中有不少作者提供的代码有错误或者代码中没有考虑特殊情况。在此,我们再次总结一下常见的八大排序算法,转载 2016-11-14 15:39:49 · 374 阅读 · 0 评论 -
二维数组作为参数传递问题
int a[2][2]={ {4, 6}, {9, 11} };我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做? 第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器无法分配这样的数组,所以要这样传int a[][3]第二种方法是传递指针数组方式,即int (*a)[转载 2016-11-10 16:47:05 · 634 阅读 · 0 评论 -
程序的处理步骤-------预处理、编译、链接、运行
1、预处理阶段宏、文件包含、条件编译2、编译阶段编译时是进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件3、链接阶段将多个源文件编译生成的目标程序连接起来,同时与系统提供的资源连接成为一个整体,从而生成一个可执行程序4、运行阶段执行连接好的程序原创 2016-11-09 10:22:26 · 711 阅读 · 0 评论 -
const与#define的区别
1、编译器处理方式不同define宏是在预处理阶段展开const常量是编译运行阶段使用2、类型和安全检查不同define宏没有类型,不做任何类型检查,仅仅是展开const常量有具体的类型,在编译阶段会执行类型检查3、存储方式不同define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存const常量会在内存中分配4、const可翻译 2016-11-09 10:09:37 · 457 阅读 · 0 评论 -
static关键字的作用
1、在函数体内一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)2、在模块内,但是在函数体外一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问,它是一个本地的全局变量3、在模块内声明函数在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用4、修饰类的成员变量在类中的static成员变量意味着它为该类的所有转载 2016-11-09 09:53:51 · 249 阅读 · 0 评论 -
const的作用
1、const修饰参数1)如果输入参数是指针型的,用const修饰可以防止指针被意外修改2)如果参数采用传值的方式,无需const,因为函数自动产生临时变量复制该参数3)非内部数据类型的参数,需要临时对象复制参数,而临时对象比较复杂,建议用前加const的引用方式传递非内部数据2、const 修饰函数返回值1)函数返回const指针,表示该指针不能被修改,只能把该指针赋给con原创 2016-11-08 18:03:25 · 236 阅读 · 0 评论 -
回调函数
回调函数就是一个通过函数指针调用的函数。当一个函数作为参数传递时,在另一个函数中可以通过形参的指针直接访问该函数。通过代码演示回调的使用以及回调函数的形参内容是如何传递的。#include #include typedef void (*callBack)(int *a,int *b); //通过宏定义函数指针void funcA(int原创 2016-11-03 10:52:38 · 348 阅读 · 0 评论 -
通过函数调用分配空间
在通过函数分配空间时参数需要设定为二级指针,才能使得在函数内部分配的空间能正确通过参数传回去以下是一个简单的测试程序#include #include void malloc_test(int **p){ *p = (int *)malloc(sizeof(int)); **p = 5; printf("**p va原创 2016-11-03 10:51:12 · 293 阅读 · 0 评论