
C++
陆业聪
腾讯高级客户端工程师。这里有大前端的经验分享和技术干货。关注公众号“陆业聪”,获取最新技术文章。
展开
-
C语言字符串反转函数
找工作前写了篇blog说要做些常见的笔试面试题,像单链表反转啊字符串反转啊之类的题目,但是只写了一篇单链表反转就没再继续写下去,因为觉得实在没什么好写的,不过都是一些简单的指针操作罢了,但是还是有很多新手问这个问题,而且我在腾讯二面的时候也被要求实现这个函数,那我也写一篇blog介绍一下字符串反转吧。 C语言中所谓的字符串不过是字符数组,后跟一个0x00字符标识结尾,所以反转起来很容转载 2014-08-03 16:01:08 · 720 阅读 · 0 评论 -
虚函数和虚继承对sizeof的影响
#include #include #include using namespace std; class A { char k[3]; public: virtual void aa(){}; }; class B : public virtual A { char j[3]; public: virtual void bb(){}; }; class C :public v原创 2015-04-10 20:26:54 · 852 阅读 · 0 评论 -
printf("%d",5.01)和printf("%f",5)的输出结果
printf("%f\n",5); printf("%d\n",5.01); printf("%f\n", (float)5); printf("%f\n", 5.f); 输出结果: 看到结果,会感觉非常奇怪。1处怎么会输出0呢?2又为何会显示这么大的一个数呢? 解释: 下面是转自网上的一篇博客的解释 1,之所以没输出5,这是C语言设计的原因。 2,之所转载 2015-04-10 10:33:24 · 789 阅读 · 0 评论 -
C++成员函数 this指针 调用约定
摘要:介绍了如何取成员函数的地址以及调用该地址. 关键字:C++成员函数 this指针 调用约定 一、成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法。C++专门为成员指针准备了三个运算符: "::*"用于指针的声明,而转载 2013-10-07 00:05:17 · 2270 阅读 · 0 评论 -
大端小端格式详解
1. 什么是大端,什么是小端: 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 2.为什么会有大小端: 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit转载 2014-07-29 23:36:54 · 548 阅读 · 0 评论 -
访问栈上的数组和堆中的数组的区别
先看一段简单的代码 void test() { int a[10] = {0}; int* b = malloc(10 * sizeof(int)); a[0] = 0; b[0] = 0; } 将以上代码保存成test.c,用gcc -c test.c生成目标代码,用objdump -o 反编译,得到以下汇编 0: 55原创 2014-12-15 17:55:38 · 1986 阅读 · 0 评论 -
从编译器角度分析C语言中数组名和指针的区别
从编译器角度分析C语言中数组名和指针的区别 数组名和指针是两个往往很容易让人们混淆的概念, 很多人以为数组名就是一个指针, 也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变 例如你可以写出下面这样的代码: int *p; p++; 却不能写这样的代码: int a[]; a++; 那么数组名跟指针之间到底有什么区别呢? 第一转载 2014-12-26 10:51:04 · 874 阅读 · 0 评论 -
C++代码静态分析工具-Prefast
1. 什么是Prefast Prefast是一种代码分析工具,它能够帮助你找到编译器不能找到的错误或者缺陷。Prefast首次被微软集成到Visual Studio 2005 Team Suite中去,使用起来非常方便。 2.怎么使用Prefast 在vs2005 Team Suite中,使用Prefast非常简单。修改你的工程属性,设置Enable Code Analysis F转载 2014-04-17 22:10:12 · 711 阅读 · 0 评论 -
java与c++在虚函数方面的异同
java与C++的虚函数比较java与C++的虚函数比较 class base { private void print() { System.out.println("base"); } public void doprint() { print(); } } class转载 2014-07-29 15:56:03 · 840 阅读 · 0 评论 -
C++中delete和delete[]的区别
1、 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 #include ; using namespace std; class T { p转载 2014-12-20 12:43:52 · 527 阅读 · 0 评论 -
在多继承的时候,如果一个类继承同时继承自class A和class B,而class A和B中都有一个函数叫foo(),如何明确的在子类中指出override哪个父类的foo()?
首先,foo在A,B总应该都是虚函数,否则就直接覆盖了,就没有这个问题了;其次,这个问题从语法角度来看似乎是无法解决。因为我们不能改原有设计(不然也没这个问题了:)),所有只好从extend来考虑: class A { public: virtual void foo(){ cout << "A" << endl; } }; class B { public: virtual vo转载 2014-12-23 17:09:03 · 1398 阅读 · 0 评论 -
reinterpret_cast
1.简介 reinterpret_cast (expression) type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。 2.用法 该运算符的用法比较多。 操作符修改了操作数类型,但仅仅是重新解释了给出的对象的转载 2014-08-03 19:23:35 · 491 阅读 · 0 评论 -
STL priority_queue<> 用法
priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解 #include #include #include转载 2015-04-08 17:11:47 · 536 阅读 · 0 评论