随笔分类 - C/C++
摘要:## C语言指针5分钟教程 ### 指针、引用和取值 什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以
阅读全文
摘要:## 让C程序更高效的10种方法 代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性、有效性、紧凑性和效率(内存)。代码设计比实际执行更难 。因此,每一个程序员当用C语言编程时,都应该记着这些东西。 本文向你介绍规范你的C代码的10种方法。 ### 避免不必要的函数调用 考虑下面的2
阅读全文
摘要:【转载】:原文 http://www.ruanyifeng.com/blog/2013/11/stack.html ## Stack的三种含义 - 博客 - 伯乐在线 - 转载 [Stack的三种含义](http://www.ruanyifeng.com/blog/2013/11/stack.htm
阅读全文
摘要:## 失落的C语言结构体封装艺术 - 博客 - 伯乐在线 转载 ### 1. 谁该阅读这篇文章 本文是关于削减C语言程序内存占用空间的一项技术——为了减小内存大小而手工重新封装C结构体声明。你需要基本的C语言的基本知识来读懂本文。 如果你要为内存有限制的嵌入式系统、或者操作系统内核写代码,那么你需要
阅读全文
摘要:【转载】:原文 http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html ## 数组指针和指针数组的区别 ### 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数
阅读全文
摘要:## linux下错误的捕获:errno和strerror的使用 经常在调用linux系统api的时候会出现一些错误,比方说使用open()、write()、creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。
阅读全文
摘要:## assert用法总结 assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: ``` #include void assert( int expression ); ``` assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它
阅读全文
摘要:## 高质量C编程指南—林锐 ### 头文件的作用略作解释: 1. 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。 2. 头文件能加强类型
阅读全文
摘要:## 内存分配方式 内存分配方式有三种: 1. 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 2. 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算
阅读全文
摘要:## sscanf函数的高级用法 sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。 ### 函数原型: int sscanf( const char *format [,argument]... ); 其中的format可以是一个或多个:
阅读全文
摘要:## sizeof()功能:计算数据空间的字节数 ### 与strlen()比较 1. strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 2. 而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。 ## 指针与静态数组的size
阅读全文
摘要:[[转载]](http://blog.csdn.net/nileel/archive/2009/06/29/4307284.aspx "[堆和栈在内存中的区别]") ## 堆和栈在内存中的区别 ### 内存分配方面: 堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数
阅读全文
摘要:C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了。 ## 指定的初始化 很多人都知道像这样来静态地初始化数组: ```c int fibs[] = {1, 1, 2, 3, 5}
阅读全文
摘要:```c char* stristr(char* pString, char* pFind) { unsigned long pFind_len=0; unsigned long cmp_len=0; char *pt1 = NULL, *pt2 = NULL; char* pString_pt =
阅读全文
摘要:C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础,但一不小心就会弄错。写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢? 开始学的时候,也被此类问题困扰很久。其实相关的文章很多,感觉说清楚
阅读全文
摘要:[C宏定义的简单总结](http://www.cppblog.com/BlueSky/archive/2007/11/20/37000.html "C宏定义的简单总结") 今天在网上突然发现了下面几个关于c代码中的宏定义的说明,回想下,好像在系统的代码中也见过这些零散的定义,但没有注意,看到别人总结
阅读全文
摘要:## 如何实现模块间高内聚、低耦合? 1. 封装与抽象; 2. 添加中间层; 3. 模块化; 4. 设计思想与原则 1. 单一职责; 2. 接口隔离原则; 3. 依赖倒置; 4. 迪米特原则; 5. 多用组合少用继承; 5. 设计模式:观察者模式 ## 设计原则及设计模式 ### 六大设计原则: 单
阅读全文
摘要:## OSI七层模型都有哪些,其中tcp/ip位于哪一层? 物理层、数据链路层、网络层、传输层、会话层、表示层及应用层,其中TCP/UDP位于传输层,而IP位于网络层。 ## tcp和udp的区别 1. TCP是流式报文,而UDP是数据包式报文; 2. TCP是面向连接的,而UDP是面向无连接的;
阅读全文
摘要:## 线程、进程的区别 线程:CPU调度的最小单元 进程:进行中的程序,资源分配的最小单元 ### 线程和进程的区别及联系: 1. 一个进程可以有多个线程,但至少要有一个进程 2. 多个进程共享一个进程中的所有资源,而多个进程之间是没有联系的 3. 一个进程中的某一线程中断,会造成整个进程的退出或者
阅读全文
摘要:## C++的特征有那些 ### 封装 将同类型事物的属性和方法进行抽象,并对其进行封装。 ### 继承 子类继承父类的,实现代码的可扩展性。继承分为单继承、多继承以及菱形继承(菱形继承可通过虚函数进行实现) ### 多态 #### 定义 在基类前添加virtual关键字,在派生类中重写该函数,程序
阅读全文