- 博客(7)
- 资源 (13)
- 收藏
- 关注
原创 数组和指针
数组被转换为指针情况的总结:1,使用a[i]这样的形式对数组进行访问总是被编译器改写为*(a+i)这样的指针访问。这时候,在访问数组元素时,在连续的内存地址上移动时,编译器都必须计算每次前进的步长。计算的方法是偏移量乘以每个数组占用的字节数,计算结果就是偏移数组起始地址的实际字节数。步长因子常常是2的幂,(如int是4个字节,double是8个字节),这样编译器在计算是就可以使用快速的左移
2009-04-26 17:00:00 756
原创 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 2360
转载 关于静态库和动态库
摘note 1.DLL DLL好像是把我混淆了好长时间了---------因为一直把它当成动态链接的一个极好的例子来看... 事实上怎么样呢.. 在拜读一本我非常推崇的计算机天文地理全典的时候,从个小细节联想到了好多 DLL是动态链接库吧?那它相当于UNIX中的SO(share object)吧?它是不是在程序运行的时候lorder挂接到内存中程序的?即是不是每个程序在lorder的时
2009-04-25 17:03:00 1459
原创 杂:表达式计算顺序,参数传递顺序,typedef和define一个区别
大部分表达式中的各个操作数的即使算顺序是不确定的,目的是为了让编译器设计者选取最合适的方法产生最快的代码。如:x = f() + g() * h();这里唯一可以确定的是先计算乘法,再计算加法。但是g()和h()的计算顺序未定。并且f()的可能在乘法之前也可能在乘法之后计算。************************************************************
2009-04-25 17:00:00 973
转载 编译链接详解
详解link有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studi
2009-04-25 15:40:00 783
转载 c中的运算符优先级及结合性(2)
(1)同一优先级的运算符优先级别相同,运算次序由结合方向决定。例如,*与/具有相同的优先级别,其结合方向为自左至右,因此,3*5/4的运算次序是先乘后除。一和++为同一优先级,结合方向为自右至左,因此-i++相当于一(i++)。(2)不同的运算符要求有不同的运算对象个数,如十(加)和-(减)为双目运算符,要求在运算符两侧各有一个运算对象(如3+5、8-3等)。而++和-(负号)运算符是一元运算
2009-04-22 11:27:00 608 1
转载 c中的运算符的优先级问题
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost
2009-04-22 11:19:00 478
linux系统进程间通信——共享内存(System V版本)
2010-01-09
支持并发的多人聊天程序
2009-11-14
基于socket的proxy
2009-10-25
JBoss下部署EJB3.0
2008-11-18
java web service 入门
2008-11-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人