
c与c++经典总结与提高篇
文章平均质量分 72
lokicui
个人正从事于嵌入式方面的工作.欢迎交流....
展开
-
关于ifndef 与 define endif
#ifndef ___H___TEST___#define ___H___TEST___.........#endif#ifndef _DIMTOL_H#define _DIMTOL_H…#endif这两种表达,是什么意思啊?条件编译预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用原创 2008-10-17 09:56:00 · 542 阅读 · 0 评论 -
浮点数的内存结构
根据IEEE的标准,浮点数的定义如下符号位指数位小数部分指数偏移量单精度浮点数1 位[31]8位 [30-23]23位 [22-00]127双精度浮点数1 位[63]11 位[62-52]52 位[51-00]1023我们以单精度浮点数来说明:符号位,表述浮点数的正或者负指数实际也有正负的,但是没有单独的符号位,而转载 2008-10-28 20:14:00 · 556 阅读 · 0 评论 -
关于CONST的用法
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。然后再看const.const作为一个类型限定词,和int有相原创 2008-10-17 09:56:00 · 424 阅读 · 0 评论 -
水滴石穿C语言之C语言的底层操作
概述 C语言的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的实际存储模型,很好的达到了对机器的映射,这是C/C++适合做底层开发的主要原因,另外,C语言适合做底层开发还有另外一个原因,那就是C语言对底层操作做了很多的的支持,提供了很多比较底层的功能。 下面结合问题分别进行阐述。 问题:移位操作 在运用移位操作符时,有两个问题必须要清楚: (1)、在右移操作中,腾原创 2008-10-17 09:54:00 · 387 阅读 · 0 评论 -
C++对象浅谈(续)
对象与异常栈解退(stack-unwinding)“栈”解退而非“堆”解退 “解退”的是 完整的 对象: 正在构造的对象不会被析构 写“异常安全(exception-safe)”的代码牢记“异常无处不在”,每写一行代码都要考虑是否可能会抛出异常for (;;){ delete p; p = 0; // this line is NOT useless p = n原创 2008-10-17 10:01:00 · 500 阅读 · 0 评论 -
函数可重入性及编写规范
(转) 一、可重入函数 1)什么是可重入性? 可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变原创 2008-10-17 09:58:00 · 607 阅读 · 0 评论 -
关于堆栈的介绍
摘自BAIDU在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。要点:堆:顺序随意栈:先进后出堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)原创 2008-10-17 09:58:00 · 511 阅读 · 0 评论 -
C++对象浅谈
C++对象浅谈last-edit-by: lungangfang 12/03/2006>引言 对象的生成 对象生成时机 限制对象的生成 对象的销毁 生存期结束的几种情况 析构函数 resource acquisition is initialization 方案一:易出错,可读性也不好(略) 方案二:出错概率稍低,但原创 2008-10-17 10:01:00 · 718 阅读 · 0 评论 -
C++总结
1.结构体对齐的具体含义(#pragma pack的用法) 朋友帖了如下一段代码: #pragma pack(4) class TestB { public: int aa; char a; short b; char c; }; int nSize = sizeof(TestB); 这里nSize结果为12,在预料之中。 现在去掉原创 2008-10-17 09:59:00 · 476 阅读 · 0 评论 -
避免编译器优化的用法,Volatile的使用
避免编译器优化的用法 转自 _lindwenvolatile的本意是“易变的” 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如:static int i=0;int main(void){...while (1){if (i) dosomething();}}/* Interrupt service routine. */void ISR_2(void)原创 2008-10-17 09:57:00 · 1340 阅读 · 0 评论 -
Typedef 的用法
Typedef 的用法用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; PCHAR pa, pb; 用途二:原创 2008-10-17 09:57:00 · 360 阅读 · 0 评论 -
c语言变参函数-
C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:int printf( const char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:printf("%d",i); printf("%s",s); printf("the numbe转载 2008-11-04 17:26:00 · 780 阅读 · 0 评论