编程技巧
DennyZhu0912
多读书,多运动,多blog,这很酷耶!
欢迎大家交流技术,邮箱:[email protected]
展开
-
static用法小结
static用法小结static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储转载 2015-03-15 18:59:01 · 347 阅读 · 0 评论 -
qsort与sort的区别
sort默认的是升序排序(return a qsort使用return *(int*)a-*(int*)b 是从小到大1.cmp函数和qsort中cmp函数的不同int cmp(const int &a,const int &b){ return a>b}Sort中的cmp函数参数可以直接是参与比较的引用类型。2.cmp转载 2015-04-09 10:29:54 · 821 阅读 · 0 评论 -
单链表逆置
对于单链表的逆置有两种方法可以实现:(1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:[cpp] view plaincopyprint?typedef int DataType; /转载 2015-03-19 14:54:00 · 489 阅读 · 0 评论 -
原码、反码、补码及移位操作
所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。1、原码、反码和补码的表示方法(1) 原码:在数值前直接加一符号位的表示法转载 2015-03-25 12:40:34 · 21466 阅读 · 4 评论 -
两个数组元素相同,顺序不同,进行正确匹配
面试宝典中87页中面试例三,不再叙述原题。大意即是有两个数组a和b,两个数组的元素相同,但是顺序不同,写一个算法求出数组a和数组b中元素之间的对应关系。题意要求不能对同一个数组中的两个元素进行比较,也不能去取数组元素中的特定值进行比较。只能进行a和b元素之间的比较。利用双重循环的时间复杂度为O(n^2),根据书中提示的优化方法定义一下数据结构typedef struct {in转载 2015-04-02 10:30:37 · 4651 阅读 · 0 评论 -
C++父类与子类关系以及函数重载、覆盖和隐藏规则
今天去HTC面试,笔试考了逻辑、c语言、c++语言几个部分,C/C++考的全是基本语法,没有考算法。C语言部分做的还不错,C++部分却做的那么多不确定,其中大部分是C++父子类之间关系以及函数重载、覆盖以及隐藏规则。在C++语言中,虚函数是非常重要的概念,虚函数是实现C++面向对象中多态性和继承性的基石。而多态性和继承性则是面向对象语言的精髓。掌握虚函数才算是真正掌握C++语言,而C++语言中转载 2015-04-02 11:00:40 · 577 阅读 · 0 评论 -
有了malloc/free 为什么还要new/delete
有了malloc/free 为什么还要new/delete ?malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库转载 2015-03-31 12:53:40 · 432 阅读 · 0 评论 -
C printf() 详解——printf('%08x',number); 程序员面试宝典中的一个错误 char * b=(char *)&a
1 #include 2 using namespace std; 3 int main() 4 { 5 unsigned int a = 0xFFFFFFF7; 6 unsigned char i = (unsigned char)a; 7 char* b = (char*)&a; 8 9 printf("%08x, %08转载 2015-03-23 20:37:42 · 1124 阅读 · 0 评论 -
C/C++关于全局变量和局部变量初始化与不初始化的区别
原文链接:http://www.kingofcoders.com/viewNews.php?type=newsCpp&id=189&number=4836955386在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下:编转载 2015-03-23 11:47:01 · 4160 阅读 · 0 评论 -
对字符串常量 的理解
常量存储总结局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区1、局部变量存储在栈中2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区3、new申请的内存是在堆中4、字符串常量也是存储在静态存储区补充说明:1、栈中的变量内存会随着定义所在区间的结束自动释放;而对于堆,需要手动free,否则它就一直存在,直到程序结转载 2015-03-30 13:55:35 · 495 阅读 · 0 评论 -
strlen和sizeof的区别
一、sizeof sizeof(...)是运算符,而不是一个函数。 一个简单的例子:int a;cout 在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的转载 2015-03-27 14:38:21 · 396 阅读 · 0 评论 -
T(n) = 25T(n/5)+n^2的时间复杂度(转)
对于T(n) = a*T(n/b)+c*n^k;T(1) = c 这样的递归关系,有这样的结论:if (a > b^k) T(n) = O(n^(logb(a)));logb(a)b为底a的对数if (a = b^k) T(n) = O(n^k*logn);if (a a=25; b = 5 ; k=2a==b^k 故T(n)=O(n^k*logn)=O(n转载 2015-03-16 13:12:35 · 800 阅读 · 0 评论 -
C代码中如何调用C++ C++中如何调用C
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译、调用协议等。使用extern "C" 主要是因为C编译器编译函数时不带参数的类型信息,只包含函数的符号名字。如 int foo( float x )C编译器会将此函数编译成类似_foo转载 2015-03-19 13:49:51 · 386 阅读 · 0 评论 -
交换两个变量的值,不使用第三个变量的四种方法
通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。转载 2015-03-15 11:15:13 · 373 阅读 · 0 评论 -
C++内存分配方式详解
整个系统的内存分为:系统代码、系统数据区,应用代码、应用数据区。其中可编程内存包括:应用代码和应用数据区。一个由C/C++编译的程序占用的内存分为以下几个部分 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样转载 2015-03-15 20:25:25 · 493 阅读 · 0 评论 -
inline函数
(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。 inline int min(int first, int secend) {/****/}; inline函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。与非inline函数不同的是,转载 2015-03-15 19:21:45 · 436 阅读 · 0 评论 -
C语言中正确使用输入函数scanf
C语言中输入函数scanf使用不当,会出现各种错误,正确使用,会提高效率,现把一些注意事项,正确的使用方法和经验分享给大家. 在C语言中空白字符括:空格、换行(\n)、回车(\r)、水平制表符(\t)、换页符(\f)、垂直制表符(\v)。在scanf读取的一个参数是数时,开始输入的空白字符会被忽略,读取数字直到遇到第一字符不是数字就会停止;读取字符串时,开始的空白字符也会被忽略掉,读转载 2015-04-09 10:07:24 · 1149 阅读 · 0 评论