摘要: #if,#ifdef,#ifndef的区别一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:* 阅读全文
posted @ 2017-12-20 12:19 wywdahai 阅读(13313) 评论(0) 推荐(3) 编辑
摘要: 1)什么是内联函数? 内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。 (2)为什么要引入内联函数?当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题。另外,前面我们讲到了宏,里面有这么一个例子:#define ABS(x) ((x)>0? (x):-(x))当++i出 阅读全文
posted @ 2017-12-20 12:18 wywdahai 阅读(1964) 评论(0) 推荐(0) 编辑
摘要: void *memcpy(void *des, void *src, int count) { assert(des!=NULL||src!=NULL); char *d = (char*)des; char *s = (char*)src; while(count--) { *d++=*s++; 阅读全文
posted @ 2017-12-20 12:18 wywdahai 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如:#define PI 3.1415926程序中的:area=PI*r*r 会替换为3.1415926*r*r如果你把#define语句 阅读全文
posted @ 2017-12-20 12:17 wywdahai 阅读(263) 评论(0) 推荐(0) 编辑
摘要: stl提供了三个最基本的容器:vector,list,deque。vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时, 阅读全文
posted @ 2017-12-20 11:51 wywdahai 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib. 阅读全文
posted @ 2017-12-20 11:50 wywdahai 阅读(167) 评论(0) 推荐(0) 编辑
摘要: int main() { fork(); fork(); printf("abc\n"); return 0; } 上述程序输出几个abc 答案:四个abc 原因是:fork调用一次,返回两次,一次返回等于0是子进程,一次返回大于0是父进程。 阅读全文
posted @ 2017-12-20 11:50 wywdahai 阅读(542) 评论(0) 推荐(0) 编辑
摘要: sds-simple dynamic string简单的动态数组 1、sds定义 2、与c字符串比较 3、sds特性 1)获取长度时间复杂度为O(1) sds中有len长度字段 2)缓冲器不会溢出 首先sds有预留空闲free存储空间 其次如果空间不够,会动态申请 3)修改字符串最多需要执行N次内存 阅读全文
posted @ 2017-12-20 11:29 wywdahai 阅读(322) 评论(0) 推荐(0) 编辑