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