
c/c++
文章平均质量分 63
DKarthas
这个作者很懒,什么都没留下…
展开
-
静态存储区问题
先贴上一段程序,如下: 1 #include 2 int main() 3 { 4 char a[]="hello"; 5 a[0]=x; 6 cout 7 char *p="word"; 8 p[0]=x; 9 cout 10原创 2007-01-12 12:36:00 · 1411 阅读 · 0 评论 -
__attribute__详解
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute转载 2007-03-13 20:59:00 · 1580 阅读 · 0 评论 -
google 笔试感悟
感觉很郁闷,考试好像完全不在状态,本来说是7.30考试,却托到了8.30,心里有点紧张,做题的过程中曾有要放弃的想法,最后现在已知的是错了一个选择题, 写程序的题忘记了一个细节地方,在遍历的时候,忘了给遍历过的结点mark,真是不应该。最后一个题没办法,当时硬是没想出来,还是水平问题,总体说来得到了些经验,也算没 白花那100人民币。说说做错的题吧。选择: int f(int原创 2007-04-24 15:59:00 · 2426 阅读 · 0 评论 -
解析“extern”
、 声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件: //A.cpp int i转载 2007-09-04 19:03:00 · 2443 阅读 · 0 评论 -
difference between slist and list.
The main difference between slist and list is that lists iterators are bidirectional iterators, while slists iterators are forward iterators. This means that slist is less versatile than list; fre原创 2007-09-09 14:29:00 · 2655 阅读 · 0 评论 -
vector and bvector.
A bit_vector is essentially a vector: it is a Sequence that has the same interface as vector. The main difference is that bit_vector is optimized for space efficiency. A vector always requires at le原创 2007-09-09 14:36:00 · 2813 阅读 · 0 评论 -
set and multiset
Associative ContainerAn Associative Container is a variable-sized Container that supports efficient retrieval of elements (values) based on keys. It supports insertion and removal of elements, but原创 2007-09-09 15:46:00 · 2808 阅读 · 0 评论 -
synmantics of stl iterator invalidation .
deque: The semantics of iterator invalidation for deque is as follows. Insert (including push_front and push_back) invalidates all iterators that refer to a deque. Erase in the middle of a dequ原创 2007-09-09 13:53:00 · 2703 阅读 · 0 评论 -
c语言中的时间处理函数集合
首先是几个struct: time_t 整形数,表示从1970年到现在的秒数。另一种是tm: struct tm { int tm_sec; /* seconds */ int tm_min; /* minutes */原创 2007-10-10 17:34:00 · 3614 阅读 · 0 评论 -
链接优先选择动态链接库so
makefile里面使用-lmemcached,没想到却使用了memcached.so.2。而不是想象中的.a库。原来连接的时候优先选择动态库。原创 2009-02-05 17:50:00 · 2901 阅读 · 0 评论 -
__THROW是什么东西?
__THROW是什么东西?很多头文件里面对函数的声明后面都跟一个这东西,查了一下,有这么个文章说的清楚,转来看看。Linux/FreeBSD内核的源文件里常会出现这个东东。其实并不复杂,只是简单的宏定义,可以参考以下代码;:/* GCC can always grok prototypes. For C++ programs we add throw() to help it optim原创 2007-03-13 20:29:00 · 5913 阅读 · 2 评论 -
thinking in c++读书笔记-------多态与虚函数
虚函数我就不介绍了,其实现的关键就在虚函数表VTABLE,每个类(前提是有虚函数)一个,每个对象有一个指向虚函数的指针VPTR。如图: 这里要说的是:如果类中有纯虚函数,这个类也就称为抽象类,抽象类的对象在作为一个函数的参数时,不能用值传递,只能用地址或者引用.原因我认为时这样的,如果采用值传递,在拷贝的过程中,如果传入的是基类的派生类,那么可能有数据丢失,产生切片,不过在函数里面原创 2007-03-16 16:19:00 · 1093 阅读 · 0 评论 -
thinking in c++ 读书笔记:c与c++之区别
首先看一下struct在c与c++中的一个典型例子:首先是c中的:typedef struct STASHtag{ int size; ..... unsigned char * storage;}stash; 再来c++中的同一个例子.struct stash{ int size; ....... unsigne原创 2007-01-12 12:47:00 · 1313 阅读 · 0 评论 -
thinking in c++ 读书笔记---集合初始化
int b[6]={0};这种方式定义并初始化一个数组,编译器会把第一个初始化值赋给数组的第一个元素,然后用0赋给其余的元素。注意,如果我们定义了一个数组而没有给出一列初始值时,编译器并不会去做这些工作。所以上面的表达式是将一个数组初始化为零的简洁方法,它不需要用一个f o r循环,也避免了“偏移1位”错误(它可能比f o r循环更有效,这依赖于编译器)。对象的集合初始化:首先看一下原创 2007-01-12 12:56:00 · 1222 阅读 · 0 评论 -
thinking in c++ 读书笔记---name control
static的变量,如果没有初始化,如果是build in type的变量,会初始化为0,在转化到合适的类型,如果是用户定义的object,会调用默认的构造函数。static变量的析构函数的调用时间:main()函数结束,或者显示调用exit()函数时。一般的实现里面,main()函数结束时都会调用exit()函数。 所以建议不要在类的析构函数里面调用exit()函数,容易造成死循环。注意原创 2007-03-06 15:48:00 · 998 阅读 · 0 评论 -
c++中函数指针的使用方法
在C++中,可以将函数地址保存在函数指针中,然后用该指针间接调用函数。例如: int (*Compare)(const char*, const char*); 该语句定义了一个函数名为Compare的函数指针,它能用于保存任何有两个常量字符形参、返回整型值的函数的地址。例如,Compare能指向C++标准的字符串比较函数库中的函数strcmp: Compare = &str原创 2007-03-08 17:00:00 · 1165 阅读 · 0 评论 -
thinking in c++读书笔记--类的静态数据成员的定义的连接属性:外部连接属性
thinking in c++ 中有一处错误,他认为类的静态数据成员的定义具有内部连接属性,可以放在头文件里面,这是不对的。下面具体说明。关于类的静态数据成员,他的定义必须在类的外部,并且只能有一次定义。这个定义,具有外部连接属性,最好放在类的实现文件里面,不能放在类的头文件里面。下面的例子证明这一点。3个文件,一个header.h,header.c main.c首先是header原创 2007-03-06 23:09:00 · 1431 阅读 · 0 评论 -
thinking in c++读书笔记---------继承与组合
名字隐藏: class A...{public : void func (); void func (int ); float func (float); }class B: public class A ...{public :int func (double);} 在上面这段程序中,只是普通的继承,B类中,有一个函数func,这个函数将掩盖基类A中所有同名原创 2007-03-16 15:58:00 · 941 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:转载 2007-01-27 18:45:00 · 768 阅读 · 0 评论 -
C语言面试题大汇总之微软亚洲技术中心面试题
1.进程和线程的差别。 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时原创 2007-01-27 18:47:00 · 1064 阅读 · 0 评论 -
三十分钟掌握STL
三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个转载 2007-03-13 21:45:00 · 1083 阅读 · 0 评论 -
nshead read的错误类型。
超时的话,会返回timeout错误,如果返回interrupted system call则表明select成功,但是read的时候返回0,两种原因:1,对端关闭连接,client长连接,server短连接就是这样。2,server端写了一些长度为0的栋栋。原创 2009-03-25 15:33:00 · 4219 阅读 · 0 评论