• c语言的类型以及指针

    C 语言已经有40多年的历史了,现在依然应用广泛,而且成为了很多主流语言的基础。但是 C 语言又和其他语言有所不同,它有自己的特点:简单、优美、强大,但是有时候显得很繁琐丫,有木有!C 语言的类型在一定情况下会转换,这个有时候让人想不到;还有就是 C 的类型和类型声明有时候会很诡异,加上指针的话更是让人防不胜防,O__O"…。本篇 blog 记录这些方面的细节,不是很全,就是目前 me 已知的一些,方便以后查看。

    Tags: 

  • c和c++的兼容性问题

    c 和 c++,很多时候,me 们在混用,有时候已经搞不清楚神马和神马了,总之,后缀就是 .cpp,能编译通过就 ok。以前有人说,懂 c++ 的对 c 比较了解,实际上情况可能相反,懂 c 的更了解 c++。通常的 c 程序,可以使用 c++ 编译器编译,没有太大问题,但是有时候却不是;同样合法的结构,编译的结果基本上是一样的,但是也有些许例外。本篇文章就是罗列一些 c 和 c++ 的不同的地方,或是应该注意的地方;不了解的话,一般不影响写程序,但是如果出现些这方面的问题,就很难发现勒。(这里的 c++ 说的是 c++98,c 说的是 c89。)

    内容基本选自:bjarne stroustrup 写的《c++程序设计原理以及实践》这本书的最后一章。

    Tags: 

  • 手工编写MFC程序

    通常 MFC 程序都是自动生成的,让 me 们省去了很多细枝末节,将注意力放到功能扩充上。但是写“纯净”的 MFC 程序也有好处,可以加深 me 们对自动生成程序的理解。下面是一个手工编写的 MFC 程序。新建 --> 项目 --> Visual C++ --> 通用,创建一个空白的程序,然后添加一个源文件,比如 source.cpp ,将下面的 code 拷进去,然后在属性中修改两个地方,程序就算 ok 勒。

    Tags: 

  • C语言实现字符串转化为整数

    将字符串转化为整数( maybe 浮点数?)是一个灰常基本的需求,基本到只要是涉及到数字的实际应用,都会有用到。然而这么一个转换程序并没有想象的那么简单,不过不用担心,几乎所有的语言库都有提供转化,比如 C 语言中就有个 atoi 函数。现在的问题是,如果让 me 们写一个,会是神马样纸?

    Tags: 

  • 引用和右值引用

    C++ 是一门复杂的语言,复杂到何种程度,me 不知道;相比而言,C语言则简单 (simple) 得多。C++11 让 C++ 又更复杂了一些。先看交换程序 swap 的各种版本,有些是只能在 C 中使用的,有些是提倡在 C++ 中使用的,不过都可以使用在 C++ 中(虽然可能得不到想要的结果)。

    Tags: 

  • 2013年网易春季实习生招聘笔试题目

    人生充满了各种杯具。昨晚网易2013年实习生招聘,来的有点仓促,me 后悔当初报的“Java服务器端开发”,而不是“C++开发” (当时 me 也么看到,O__O"…)。基础题目都是一样的,然后 C++ 和 Java 做不同的试卷,Java 试卷上又分为“Java开发/服务器开发/...”、“分布式/...”、“推荐算法/...”等。

    me 做的是基础题目和服务器开发两大块内容,分布式的看了3道题,过后有个童鞋问了 me 3道 C++ 的题(听说是笔试题)。下面是大致的题目,以及一些分析或是 me 的一些结果,很多细节记不大清了。

    Tags: 

  • Catalan数

    me 一个童鞋跟 me 提过一个问题:说1-12 这 12 个数,分成 2 组,然后每组按大小排序,其中一组中的数总是比另外一组中对应顺序的数要大,问有多少种情况?me 还真做不出来,他告诉 me 说这是Catalan数。即使他这么说,me 貌似还是不太明白。不过这不影响,me 简单搜索一下这个数(其实me以前就有所耳闻),有好几个用处,简单罗列一下。

    平衡括号

    平衡括号:在一个合法的算术表达式中可以出现的括号都是平衡括号,更专业一点的说法应该是“所有的左括号和右括号可以建立一对一的对应关系,并且左括号在对应的右括号左侧”。像()(), (())(), (()())(()) 都是平衡括号,但是(()))(, ()())() 就不是平衡括号。

    观察一下特点,判断所给的一个括号串是不是平衡很容易:设置一个计数器,初始值为 0,然后从左向右数,遇到左括号 +1,遇到右括号 -1,在过程中不出现负数,并且最终的计数器还是 0,那么就是平衡括号;除此之外就是非平衡括号。

    现在的问题是,如果有 n 对括号,问平衡的情况有多少种?暂时可以数一下 n = 1, 2, 3, 4 时的情况:

    Tags: 

  • 网易面试被刷教训总结

    面试被刷,心情固然有些不好受,不过想想,也就仅此而已吧,难道 me 晚饭不吃勒?晚饭不吃,明天早饭吃不吃?明天早饭不吃,明天晚饭吃不吃?相比起低落,me 感慨倒是更多。

    早上七点出发,九点到网易,在外面晃悠了半个小时,十点开始面试。主要是杭州滴童鞋,也有南京和宁波赶过来的。过程分三面,两轮专业面试,最后一个 hr 面试,某一轮结束可能会告诉 "u can leave",应该就是被刷了。一对一面试,面试快的听说只要 10 分钟 (O__O"…),慢的一个小时(应该只有四五十分钟的样纸),面试完一次,等一下消息通知,然后下一轮,或是 leave。me 经过两轮面试,第一轮还好,第二轮赶脚忒差。中午消息迟迟不通知,后来说 hr 吃饭去了,me 们等丫等丫,等到通知的时候,已经下午一点半了,O__O"…。

    Tags: 

  • c++构造函数以及类中变量初始化顺序

    构造函数

    c++ 的类提供了一种抽象机制,使用起来要比 c 方便很多。为了安全等,c++ 中的每一个对象都要经过构造,跑出作用域之外的对象(非 free-store 上的)都要析构,不管是使用自定义的构造/析构函数也好,还是使用默认的。为了对象的正确拷贝构造或是赋值,me 们要自己写拷贝构造函数/拷贝赋值,为了所谓的效率,还得自己写移动构造函数/移动赋值。默认生成的若干个函数有:

    Tags: 

  • Dijkstra最短路径算法

    闲逛贴吧,看到一个童鞋问一个图的 Dijkstra 最短路径算法,me 思考了片刻,打算自己写一写,看看水平是不是下降勒,O__O"…,程序写的相对来说比较顺利,但是也遇到了若干个问题,比如如何表示无穷大、如何消除有无穷大的加法、如何保存路径信息、如何输出结果和如何使得开始节点可以调节(而不是硬编码写死)等,最后就有了这篇 blog。先看看人家给的图:

    Tags: 

Pages