c++
文章平均质量分 62
dazhi_100
这个作者很懒,什么都没留下…
展开
-
ndebug与debug及assert()的用法
//no debug 关闭调试,忽略掉所有的assert //即使有出错的情况 #define NDEBUG //默认情况下会调式是打开着的 //#define DEBUG #include #include int main(int argc , char** argv){ int value = 12; a转载 2011-12-09 19:56:51 · 8388 阅读 · 0 评论 -
memset函数的性质
memset将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。目录需要的头文件函数原型函数介绍常见错误常见问题程序例memset函数详细说明需要的头文件函数原型函数介绍常见错误转载 2012-06-15 15:15:09 · 413 阅读 · 0 评论 -
自己写的代码2
volation关键字#include#includeusing namespace std;int main(){ const volatile j=10; cout //j=0; return 0;} 变量的类型长度#includeusing namespace std;int main(){ int i=0;转载 2012-06-14 18:06:21 · 850 阅读 · 0 评论 -
#pragma pack(n) 与 __attribute(aligned(n))
#pragma pack(n)与 __attribute(aligned(n))在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成转载 2012-06-15 15:33:00 · 580 阅读 · 0 评论 -
远指针,近指针,巨指针
预备知识: 这与CPU寻址有关。在16位机器下,地址线为20位。但CPU处理能力只有16位。于是访问内存的方案是分段。即基址(段)+偏址是逻辑地址,从中可计算物理地址。基址(段)有16位,偏址也16位,寻址时将基址左移4位加偏址既可寻址。注意,段只有16位。其大小为2的16次方。即64K。解释: 当你访问地址(指针)在一个段内,这是这个指针是近指针。当你访问地址(指针)不在一个段内转载 2012-06-28 14:45:28 · 2042 阅读 · 1 评论 -
huge、far、near指针的说明
今年金山笔试题中有一道LPWORD++的递增字节数,拿不准回来查一下,发现原来有这么多东西在里面,记录一下,呵呵。 WINDEF.H中定义了LPWORD我们来看一下: typedef WORD near *PWORD; typedef WORD far *LPWORD;而WORD是一个unsigned short类型,那么转载 2012-06-28 14:36:28 · 1338 阅读 · 0 评论 -
print函数的各个参数含义
所以有必要温习一下print函数来了解各种%值得意义。 Printf(xxxxx) 功 能: 产生格式化输出的函数用 法: int printf(constchar *format,[argument]); format 参数输出的格式,定义格式为: %[flags][width][.perc] [F|N|h|l]type([]中的内容表示是可转载 2012-06-29 18:10:44 · 4292 阅读 · 0 评论 -
C/C++浮点数在内存中的存储方式
C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是转载 2012-08-11 16:22:17 · 681 阅读 · 0 评论 -
near指针,far指针,huge指针
near指针和far指针在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的转载 2012-08-30 22:20:21 · 556 阅读 · 0 评论 -
c++ malloc/free、new/delete
方案1:c++ malloc/free、new/delete 内存申请函数比较转自:http://blog.csdn.net/zgbsoap/article/details/567970 感谢原作者!有了malloc/free 为什么还要new/delete ?malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态转载 2012-09-25 23:56:43 · 827 阅读 · 0 评论 -
C,C++表达式求值顺序
裘宗燕:C/C++ 语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout C++ 不是规定 要弄清这些,需要理解的一个问题是:如果程序里某处修改了一个变量(通过赋值、增量转载 2012-09-13 23:07:18 · 797 阅读 · 0 评论 -
STL的线程安全性
Thread-safety for SGI STLSGI STL provides what we believe to be the most useful form of thread-safety. This explains some of the design decisions made in the SGI STL implementation.Client must l转载 2012-09-23 22:48:51 · 510 阅读 · 0 评论 -
new失败
《编写高质量代码:改善C++程序的150个建议》本书是C++程序员进阶修炼的必读之作,包含的全部都是C++编码的最佳实践,从语法、编码规范和编程习惯、程序架构和设计思想等三大方面对C++程序和设计中的疑难问题给出了经验性的解决方案,为C++程序员编写更高质量的C++代码提供了150条极为宝贵的建议。本节为大家介绍建议30:new内存失败后的正确处理。AD:51CTO云计算架构师峰会 抢票进行中转载 2012-09-26 07:30:34 · 1044 阅读 · 0 评论 -
c++各种类型变量的内存分配
程序在的内存中的分配(常量,局部变量,全局变量,程序代码)一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有转载 2012-08-30 21:34:38 · 869 阅读 · 0 评论 -
c/c++中数的强制类型转化!!!!!!
在vc6中运行如下代码:#include int main(){ unsigned int a=0xFFFFFFF7,c=0xFFFFFF67; char *b=(char*)&a, *d=(char*)&c; printf("b=%x, d=%x\n",*b,*d); return 0;}为什么输出的结果会是:b=fffffff7, d=67如果将c改为:c=0x转载 2012-08-11 16:59:39 · 1082 阅读 · 0 评论 -
printf的三种数制输出
#include "stdio.h"void main(){ int x = 77; // 十进制数 int y = 0x77; // 0x 表示十六进制数 int z = 077; // 0 表示八进制数 printf(" 八进制输出: x = %o\n",x); // %o 表示以八进制输出 printf(" 十进制输出: x = %d\n",x); // %d 表转载 2012-08-11 17:11:41 · 603 阅读 · 0 评论 -
float转化为string、string转化为float
float_inverse_string.c#include#includeint main(){ char a[30]="123"; char b[30]; float a1,b1=34555.0; a1=atof(a); gcvt(b1,5,b); printf("%f\n\n",a1); printf("%s\n",b); return 0;原创 2012-06-18 16:54:26 · 4222 阅读 · 0 评论 -
自己写的代码
大小端#include int main(){int a[5]={1,2,3,4,5};int *ptr1=(int *)(&a+1);int *ptr2=(int *)((int)a+1);int *ptr3=(int *)((int)a+2);printf("%x\n",1);printf("%x\n",10);printf("%x\n",a);转载 2012-06-14 17:59:20 · 568 阅读 · 0 评论 -
C++中srand(unsined int) time(NULL) 前置++后置++ tolower
srand()函数是用来重置随机数的种子。参数为一个unsigned inttime()取当前时间。整个语句就是将随机数的种子设为当前时间。经常会在随机数使用前用到,可以保证每次生成的随机数不一样。 1.看tolower声明: template CharType tolower( CharType _Ch, const locale& _Loc ) 具体到C库中: int __cde原创 2012-03-19 19:35:19 · 722 阅读 · 0 评论 -
c++中vector的应用
几天一个同学问我c++里面的vector的使用,我研究了一下,先总结如下:1.vector 的数据的存入和输出:#include#include#include using namespace std;void main(){ int i = 0; vector v; for( i = 0; i { v.转载 2012-03-19 17:07:37 · 369 阅读 · 0 评论 -
[C++]NDEBUG宏与assert行为
NDEBUG宏是Standard C中定义的宏,专门用来控制assert()的行为。如果定义了这个宏,则assert不会起作用。#ifdef NDEBUG#define assert(x) ((void)0)#else...C Standard中规定了assert以宏来实现。被设计来可以被多次包含,其中一上来就undef assert,然后由NDEBUG宏来决定其行为。如:转载 2011-12-09 19:41:38 · 943 阅读 · 0 评论 -
学习C++的50条忠告 也适合于C
1.把C++当成一门新的语言学习(和C没啥关系!真的); 2.看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差);3.看《The C++ Programming Language》(这本东西有影印板的)和《Inside The C++ Object Model》 ,不要因为他们很难而 我们自己是初学者所以就不看;4.不要被VC、BCB转载 2012-02-23 16:57:28 · 359 阅读 · 0 评论 -
详解sizeof操作符
详解sizeof操作符分类: C/C++学习 码农常识2012-02-16 09:17 95人阅读 评论(0)收藏 举报一、sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。转载 2012-02-16 20:45:25 · 513 阅读 · 0 评论 -
用 const 限定类的成员函数
原帖由 "yuxq" 发表:...5. const 限定类的成员函数:class classname { public: int fun() const; .....} 注意:采用此种const 后置的形式是一种规定,亦为了不引起混淆。在此函数的声明中和定义中均要使用const,因为const已经成为类型信息的一部分。获得能力:可以操作常量对象。转载 2012-02-19 21:29:47 · 339 阅读 · 0 评论 -
[笔试题 10][c/c++]常对象,常函数
[cpp] view plaincopyprint?class A { public: A(){} const A& operator+(const A& ths) { return *this; } const A& operator+(int m)con转载 2012-02-19 21:39:09 · 461 阅读 · 0 评论 -
浮点数知识普及
最近做HDR时,经常要用NV提供的16位纹理,它的说明书16位能达到24位的精度,就很奇怪?一直搞不懂浮点数的精度怎么算的?今天认真看了一下IEEE float point的标准,终于明白是什么了1. 什么是浮点数在计算机系统的发展过程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中转载 2012-02-29 10:58:35 · 1696 阅读 · 0 评论 -
C语言中memset函数详解
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include #include #include int main(void) {转载 2012-03-07 14:57:00 · 431 阅读 · 0 评论 -
vector.resize 与 vector.reserve的区别
reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。再者,两个函数的形式是有区别的,reserve函数之转载 2012-03-23 19:53:17 · 345 阅读 · 0 评论 -
嵌入式操作系统 中断服务子程序 ISR
中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interrupt double compute_area (double radius) { double area = P转载 2012-03-28 21:46:14 · 990 阅读 · 0 评论 -
中断解析
一、中断是什么中断的汉语解释是半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为什么需要“阻隔、停顿和断开”呢?举个日常生活中的例子,比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。等啊等啊,外边突然传来了惊奇的叫声“怎么不关水龙头?”于是我惭愧的发现,刚才接水之后只顾着抱怨这份无聊的差事,居然忘了这事,于转载 2012-03-28 21:49:39 · 602 阅读 · 0 评论 -
浮点数的比较1
问:我想比较两个浮点型变量,应该怎么比较? 答:大于、小于直接比较啊。 等于最好这样: const float E = 1e-6; float f1 , f2; …… if(fabs(f1 - f2) {……}------------------------------转载 2012-03-15 21:25:40 · 886 阅读 · 1 评论 -
浮点数在内存中的表示
C语言的float对应单精度浮点数,由1位符号、8位指数、23位尾数组成尾数部分是二进制小数,那23位是小数点后面的部分,小数点前面还有个隐含的1并不存储二进制小数和十进制小数道理一样,只是基数变成2比如十进制的3.14 = 3x10**0 + 1x10**-1 + 4x10**-2 = 3 + 1/10 + 4/100二进制的的1.00011就是1x2**0 + 0x2**-1转载 2012-03-15 17:05:08 · 549 阅读 · 0 评论 -
浮点数的比较
在数学运算当中经常会涉及到判断两个数是否相等的情况对于整数很好处理 A==B这样的一个语句就可以解决全部的问题但是对于浮点数是不同的首先,浮点数在计算机当中的二进制表达方式就决定了大多数浮点数都是无法精确的表达的现在的计算机大部分都是数字计算机,不是模拟机,数字机的离散化的数据表示方法自然无法精确表达大部分的数据量的。其次计算机浮点数的精度在单精度float类型下,只有转载 2012-03-15 21:24:28 · 518 阅读 · 0 评论 -
c++内置数据类型的取值范围和大小总结
类型大小(字节)值bool1true 或者falseunsigned short int20~65535short int2-32768~32767unsigned long转载 2012-04-04 09:52:22 · 710 阅读 · 0 评论 -
STL简介
这是一篇指导您如何在Microsoft Visual Studio下学习STL并进行实践的文章。这篇文章从STL的基础知识讲起,循序渐进,逐步深入,涉及到了STL编写代码的方法、STL代码的编译和调试、命名空间(namespace)、STL中的ANSI / ISO字符串、各种不同类型的容器(container)、模板(template)、游标(Iterator)、算法(Algorithms)、分配转载 2012-03-19 17:26:06 · 520 阅读 · 0 评论 -
指针域数组
1.指针数组:一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数组。int * a[10];它里边放了10个int * 型变量,由于它是一个数组,已经在栈区分配了10个(int * )的空间,也就是32位机上是40个byte,每个空间都可以存放一个int型变量的地址,这个时候你可以为这个数组的每一个元素初始化,或者单独做个循环去初始化它。一个指针数组中的指针可以为任何同一转载 2012-03-19 18:04:51 · 977 阅读 · 0 评论 -
java的接口和C++虚类的相同和不同之处
C++虚类相当于java中的抽象类,与接口的不同之处是: 1.一个子类只能继承一个抽象类(虚类),但能实现多个接口 2.一个抽象类可以有构造方法,接口没有构造方法 3.一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现(有方法体),接口中的方法都是抽象方法,不能有方法体,只有声明 4.一个抽象类可以是public、privat转载 2013-03-13 10:09:15 · 1151 阅读 · 0 评论