C/C++
文章平均质量分 79
寒冰豌豆
这个作者很懒,什么都没留下…
展开
-
string 使用
前言: string 的角色 1 string 使用 1.1 充分使用string 操作符 1.2 眼花缭乱的string find 函数 1.3 string insert, replace, erase 2 string 和 C风格字符串 3 string 和 Charactor Traits 4 string 建议 5 小结 6 附录前言: string 的角转载 2011-11-16 13:49:16 · 1423 阅读 · 0 评论 -
语义"陷阱"---数组和指针
数组和指针经常出现于编程语言中、也许上课的时候老师也说过数组和指针有区别、参考书上也应该讲过,你是不是也不曾透彻的理清过? 这篇博文主要从内存和编译的角度指出了数组和指针在访问方式上的区别、至于他们在函数调用的区别、以及它们的联系将在下一篇中详细讨论。 好了、这篇博文就讲一下我对数组和指针的认识。希望能给你一些帮助。 为了说的清楚些、会先说一些基础的部分、如果你已经掌握大可跳过转载 2011-12-14 16:06:23 · 403 阅读 · 0 评论 -
数组和指针背后——内存角度
聊过数组和指针的区别,主要是对于数组和指针在内存中的访问方式加以区分,这篇博文则从更深层的角度剖析数组和指针的联系 如果你也对底层感兴趣、我向这篇文章会对你有所帮助, 什么时候数组和指针相同(When an Array Is a Pointer ) 在实际应用中,他们可以互换的情形要大大多于不能互换的情形。首先再回顾一下声明和定义,(上一篇中有提到这里在深入一下) 声明本身转载 2011-12-14 16:07:34 · 405 阅读 · 0 评论 -
全局变量 静态变量
static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 Tips: A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;转载 2011-12-14 16:03:17 · 168 阅读 · 0 评论 -
C++文件操作详解(ifstream、ofstream、fstream)
C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file) 对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文转载 2011-12-20 16:35:10 · 729 阅读 · 1 评论 -
正确的C++内存分区
真正合理的C++的内存划分为栈区、堆区、全局区/静态区、字符串常量和代码区。 这里去掉自由存储区,增加了代码区,理由会在下面讲到。 栈区:由系统进行内存的管理。 说明:主要存放函数的参数以及局部变量。栈区由系统进行内存管理,在函数完成执行,系统自行释放栈区内存,不需要用户管理。整个程序的栈区的大小可以在编译器中由用户自行设定,默认的栈区大小为3M。 全局/静态区:转载 2011-12-01 10:12:49 · 375 阅读 · 0 评论 -
如何获取函数的可变参数(va_list, va_start, va_arg, va_end)
C++ prinmer 中讲到函数的可变参数(ellipsis...),但是primer中讲得比较浅,提到了怎么声明怎么调用,但是没有写明在函数内部是如何获取可变的参数的。 1)省略号(ellipsis) 在无法给出所有传递给函数的参数的类型和数目时,可以使用省略号(...)指定函数参数表。有如下几种形式: 1 void fun1(int a, double b, ...); /转载 2011-12-01 11:34:47 · 1587 阅读 · 0 评论 -
C++常见问题说明
1、用预处理指令#define声明一个常数,用以表明一年中有多少秒(忽略闰年的问题) 解析:1.#define语法的基本知识(例如,不能以分号结束,括号的使用等) 2.要懂得预处理器将为你计算常数表达式的值,因此,写出你是如何计算一年中有多少秒而不是计算出实际的值,会更好意义。 3.意识到这个表达式将使一个16位机的整型数溢出,因此要用到长整形符号转载 2011-11-08 17:59:05 · 591 阅读 · 0 评论 -
边界测试——让BUG现形
边界测试——让BUG现形 题目:写一个函数,输入一行字符,将此字符串中最长的单词输出。 View Code #include #include string.h>int main(){int alphabetic(char);int longest(char []);int i;char line[100];printf("input one line:\n转载 2011-11-08 17:23:51 · 531 阅读 · 0 评论 -
算法--两道百度笔试题
百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。 其实开始的时候我也是一头雾水,在纸上画画之后发现,其实就是一道变形的插入排序。幸运的是这里不需要比较大小,要比较大小的话时间复杂度是O(n2),只用判断正负,那时间复杂度就只要O(n)了。转载 2011-11-17 11:55:31 · 576 阅读 · 0 评论 -
[C++]实现委托模型
我对.Net的委托模型印象很深刻,使用委托,可以快速实现观察者模式,免去写很多繁杂重复的代码。遗憾的是,C++并没有提供这样的模型,为了达到相似的目的,需要继承一个类并重写virtual方法,这种做法需要写很多代码,效率比较低下(使用过MFC的应该都能体会到)。然而,在强大的C++面前,没有什么是不可能的,已经有很多人针对这个问题进行过研究,并且实现了各种委托模型,其中最著名的就是FastDele转载 2011-11-17 11:43:25 · 318 阅读 · 0 评论 -
我所知道的一个简单类
我所知道的一个简单类 大家都说C++难学,我也正在学习,之所以难是可能因为没有了解C++中的一些很基础的东西,有点似懂非懂的感觉,而没有真正了解C++的运行机制,我一直在学习基础,这篇博客源于一个简单的类,这就是我所知道的一个简单类,博客中的观点大部分来至Effective C++和More Effective C++两本书,我是反复看了好几遍,还会一直看,因为我的C++还很菜。转载 2011-11-17 11:23:45 · 570 阅读 · 0 评论 -
C++ 值传递、指针传递、引用传递详解
关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 下文会通过例子详细说明哦 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。 指针传递: 形参为指向实参转载 2011-12-14 16:09:17 · 1383 阅读 · 0 评论