C/C++
文章平均质量分 60
clearriver
做一番一生引以为豪的事业;找一个一生荣辱与共的妻子;在有生之年报答帮助我的人;并且帮助有需要我帮助的人!
展开
-
c中的运算符的优先级问题
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost转载 2009-04-22 11:19:00 · 477 阅读 · 0 评论 -
C++的sstream标准库介绍
C++的sstream标准库介绍接下来我们继续看一下C++风格的串流控制,C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。转载 2009-07-12 11:18:00 · 597 阅读 · 0 评论 -
一道类型转换题(from:byr)
include int A[]={1,2,3,4,5,6,7}; #define Length sizeof(A)/sizeof(A[0]) int main() { int d=-1; printf("%d/n",d } 为什么输出0?解释:-1左边-1为int,右边为size_t,即unsigned原创 2009-10-26 17:50:00 · 99 阅读 · 0 评论 -
结构体大小及其位域问题(from:byr)
问题: struct mybitfields { unsigned short a : 4; unsigned short b : 5; unsigned short c : 7; }test void main(void) { int i; test.a=2; test.b=3; test.c=0; i=*((short *)&test); printf("%d/转载 2009-11-02 17:06:00 · 823 阅读 · 0 评论 -
支持并发的多人聊天程序
下载链接http://clearriver.download.csdn.net/http://download.csdn.net/source/1816684注:这是师弟妹们的一么课程的大作业,我就为了练练手来做的,时间比较仓促,里面有很多粗鲁的实现:(1) 一些信号没有做处理(2) 一些同步没有做(3)原创 2009-11-14 18:02:00 · 1441 阅读 · 0 评论 -
C语言中位移位运算符
C语言中位移位运算符 位移位运算符http://www.fsec.cn/rrj/cpp/cjz22.htm 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。 位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。转载 2009-11-26 13:51:00 · 1386 阅读 · 0 评论 -
位运算应用口诀和实例
原帖:http://blog.csdn.net/superdullwolf/archive/2009/10/10/4649080.aspx位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,转载 2009-12-10 16:07:00 · 570 阅读 · 0 评论 -
C语言拾遗(一)
1,const在c语言中的含义是readonly,由其定义的变量并不能作为常量使用,例如定义数组时以及作为switch...case中case后的整型或字符型常量时。c++做了相应扩展。可以用cc/gcc/g++作为测试。2,枚举类型enum和#define定义宏的区别(1)枚举类型是在编译期间确定的常量,而宏定义是在预编译期间的常量(2)枚举定义的符号在调式期间可以显式,而原创 2009-12-29 10:41:00 · 667 阅读 · 0 评论 -
c/c++拾遗(三)
1,C++继承了ANSIC的预定于符号常量,预处理器在处理时将它们替换成确定的字面常量。_LINE_:引用该符号的代码行号_FILE_:源文件名称_DATE_:该源文件被编译的日期_TIME_:引用该符号的语句在源文件被编译的时间_TIMESTAMP_:引用该符号的语句在源文件被编译的日期和时间_STDC_:标准C语言环境定义用于表示当前环境2,重载函数,如:void f(int a);void原创 2010-03-22 17:41:00 · 677 阅读 · 0 评论 -
关于大端小端字节序
http://www.cppblog.com/tx7do/archive/2009/01/06/71276.html大端Big-Endian低地址存放最高有效位(MSB),既高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。计算机体系结构中一种描述多字节存储顺序的术语,在这种机制中最高有效位(MSB)存放在最低端的地址上。采用这种机制的处理器有IBM3700系列、PDP-10转载 2010-03-21 10:00:00 · 1045 阅读 · 0 评论 -
c/c++拾遗(二)
1,在标准C语言中,const符号常量默认是外连接的,不能在两个编译单元中定义一个同名的const符号常量。但是在标准c++中,const默认是内连接的,可以在两个编译单元中定义一个同名的const符号常量,编译器认为它们是不同的符合常量,因此每个编译单元独立分配存储空间,在链接时进行常量合并。2,一个多维数组在语义上并不等价于一个指向其元素类型的指针,相反它等价于一个“指向数组的指针”。例如原创 2010-03-21 11:27:00 · 692 阅读 · 0 评论 -
函数间数据拷贝 stack overflow
完成程序,实现对数组的降序排序 #include void sort( ); int main() { int array[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出 sort( ); return 0; } void sort( ) { ____________________________________ } 解答:#include #includ转载 2010-03-31 19:37:00 · 797 阅读 · 0 评论 -
关于浮点数转换为整数的(int )和(int &)形式
float a=1.0f;std::coutstd::coutstd::cout机子上的输出是:110661920770可以这样理解:(int)a 是把浮点数a的数学数值转化成int型,即保留了其整数部分(int&)a 等价于 *((int*)&a),即是将浮点数a的内存存储结构按照int型来解释,由于浮点数在存储的时候需要包括符号部分,指数部分,位数部分,而这些数据在转化成int型来解释转载 2010-04-13 21:37:00 · 2524 阅读 · 0 评论 -
内存泄露检测工具
浅谈C/C++内存泄露及其检测工具(windows)http://c.chinaitlab.com/system/788396.htmlLinux C内存泄露检测工具http://blog.sina.com.cn/s/blog_4b9216f50100e6o7.html?retcode=0转载 2010-05-17 15:17:00 · 630 阅读 · 0 评论 -
IO库——sstream和strstream
在C++有两种字符串流,一种在sstream中定义, 另一种在strstream中定义。 它们实现的东西基本一样。 strstream里包含 class strstreambuf; class istrstream; class ostrstream; class strstream; 它们是基于C类型字符串char*编写的 s转载 2009-07-12 11:01:00 · 769 阅读 · 0 评论 -
volidate关键字的使用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automat转载 2009-07-07 17:28:00 · 7185 阅读 · 1 评论 -
c中的运算符优先级及结合性(2)
(1)同一优先级的运算符优先级别相同,运算次序由结合方向决定。例如,*与/具有相同的优先级别,其结合方向为自左至右,因此,3*5/4的运算次序是先乘后除。一和++为同一优先级,结合方向为自右至左,因此-i++相当于一(i++)。(2)不同的运算符要求有不同的运算对象个数,如十(加)和-(减)为双目运算符,要求在运算符两侧各有一个运算对象(如3+5、8-3等)。而++和-(负号)运算符是一元运算转载 2009-04-22 11:27:00 · 608 阅读 · 1 评论 -
数组和指针
数组被转换为指针情况的总结:1,使用a[i]这样的形式对数组进行访问总是被编译器改写为*(a+i)这样的指针访问。这时候,在访问数组元素时,在连续的内存地址上移动时,编译器都必须计算每次前进的步长。计算的方法是偏移量乘以每个数组占用的字节数,计算结果就是偏移数组起始地址的实际字节数。步长因子常常是2的幂,(如int是4个字节,double是8个字节),这样编译器在计算是就可以使用快速的左移原创 2009-04-26 17:00:00 · 755 阅读 · 0 评论 -
编译链接详解
详解link有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studi转载 2009-04-25 15:40:00 · 783 阅读 · 0 评论 -
关于静态库和动态库
摘note 1.DLL DLL好像是把我混淆了好长时间了---------因为一直把它当成动态链接的一个极好的例子来看... 事实上怎么样呢.. 在拜读一本我非常推崇的计算机天文地理全典的时候,从个小细节联想到了好多 DLL是动态链接库吧?那它相当于UNIX中的SO(share object)吧?它是不是在程序运行的时候lorder挂接到内存中程序的?即是不是每个程序在lorder的时转载 2009-04-25 17:03:00 · 1457 阅读 · 0 评论 -
char类型提升为int
以下程序为何输出的是 -1 ????? #include void main() { char i=0xFF; printf("i=%d /n",i); }分析:首先char类型是用一个字节来表示的,表示的数值范围是-128~127,所以0xFF按照有符号数的法则,最高bit位表示正负号:为0表示正,为1表示负.后面的7个bit位才表示数值,不过这个数值也不是直接表示的,而是取的对应数值的补码原创 2009-04-26 15:18:00 · 2356 阅读 · 0 评论 -
杂:表达式计算顺序,参数传递顺序,typedef和define一个区别
大部分表达式中的各个操作数的即使算顺序是不确定的,目的是为了让编译器设计者选取最合适的方法产生最快的代码。如:x = f() + g() * h();这里唯一可以确定的是先计算乘法,再计算加法。但是g()和h()的计算顺序未定。并且f()的可能在乘法之前也可能在乘法之后计算。************************************************************原创 2009-04-25 17:00:00 · 973 阅读 · 0 评论 -
智能指针——类指针成员的复制
思想:将类的指针成员附加对其引用次数封装到一个“智能指针类Point”中,定义类成员指向这个Point类。 1 #include 2 using namespace std; 3 class Product; 4 class Point 5 { 6 friend class Product; 7 private: 8原创 2009-07-14 22:09:00 · 1166 阅读 · 1 评论 -
C++ I/O库流状态标志位
再来看看输入状态标记位、状态测试函数、状态设置函数之间的关系: 输入状态标记位常量有以下几个: 标记位常量 常量含义failbit标记位的值eofbit标记位的值badbit标记位的值转化为10进制ios::转载 2009-07-21 14:21:00 · 5043 阅读 · 2 评论 -
关于i++和++i
今天看到一道关于i++的题目:#include int main() { int x; x = 4; x += x-=x-x--; cout return 0; } 问:打印出的x值是多少?结果为7,分析如下:首先计算x-x,值为0,然后计算x-=x,此时x值为4。然后计算x+=x;此时x值为8原创 2009-05-16 22:20:00 · 624 阅读 · 0 评论 -
关于copy constructor的编译器优化
http://www.csdn.net/expert/topic/806/806937.xml?temp=.2044489 其实我看>的时候也没搞清楚这个问题,在那个帖子里我胡言乱语一番, 现在想把这个问题彻底弄清楚,现在把我对书上部分内容的理解写出来,抛砖引玉, 欢迎指正.有书的朋友见书上60-75页. 问题介绍: 拷贝构转载 2009-08-04 14:33:00 · 837 阅读 · 5 评论 -
C++中头文件包含问题
C++中基础类互相引用带来的问题在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用 ( 不满足继承关系,而是组合关系 ) 。也就是需要互相声明。好了,这时候会带来一些混乱。如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法:编码时,我们一般会尽量避免 include 头文件,而是采用声明 class XXX 。 但有时候还是必须用 Include 头文件,那么转载 2009-06-17 22:57:00 · 1257 阅读 · 0 评论 -
priority_queue用法小结
刚开始学习算法不久,一些常用的算法工具还没有掌握,真是丢人!前一段时间用到优先级队列时,都是自己手动通过最大堆或者最小堆来写一个,容易出错且耗时。接触到STL后,开始用map和set模拟一个优先级队列,但是总有一些小问题出现,发现STL功能强大,但我却几乎不懂。今天终于决定使用STL提供的priority_queue,发现还挺好用,虽然很多人都称他效率不够高,但是使用起来很方便。下面就总结原创 2009-08-30 11:27:00 · 4790 阅读 · 0 评论 -
rand()与srand()用法
<!-- document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text");转载 2009-07-07 17:12:00 · 653 阅读 · 0 评论 -
汉字的编码与字模点阵小结
<br />汉字的编码与字模点阵小结 <br />一、引言<br />在写的时候参考了以下两篇文章中的内容,在此向这两篇文章的作者<br />表示敬佩和感谢.<br />代码部分参考了<br />http://www.ugia.cn/?p=82 作者legend<br />文档部分参考了<br />http://dev.gameres.com/Program/Control/fontDOS.htm 作者吴进<br /><br />二、汉字的内码、编码和点阵<br />汉字显示的基本原理,计算机内一般都有汉字转载 2010-07-16 14:06:00 · 2020 阅读 · 0 评论