- 浏览: 208799 次
- 来自: 北京
文章列表
1.前置运算符和后置运算符,左值和右值。
其实很久以来一直都没有怎么搞清楚左值和右值的区别,只知道左值可以放在等号的左边,也可以放在等号的右边,但是右值却只能放在等号的右边,然后形
成一个大概直观的印象,知道怎么样做才不出错而已。不过今天看看C++,却发现有了点新的体会。
对于表达式a--=5;这样一个表达式,明显是错误的,究其原因,是因为执行等号左边的自减表达式之后,显示取得a的值,然后才是进行自减操作,所
以最终的结果是一个右值,而且就是a的值(变化前的),于是对于赋值语句 b = a--,自然不会弄错了。
而对于--a=5;这样一个表达式,则明显就不同了。首先执行的是自减操作,然 ...
- 2010-05-07 17:19
- 浏览 311
- 评论(0)
先给出结论:
i++ = 5; 错
++i = 5; 对
原因为何:i++的运算结果并不是i这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算:
i++=5;甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误 。
左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。
a = 5;
a是左值。
不能被改变的值不是左值,常量像5,'a',"abc123"这种都不能做左值。
自加/减运算符的操作数如果不是左值就不能自加和减。
但i++的操作就不能作 ...
- 2010-05-07 17:18
- 浏览 469
- 评论(0)
规
则:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。
完整单词
缩写
A
average
avg
B
back
bk
background
bg
break
brk
buffer
buf
C
color
cr,clr
control
ctrl
D
data
dat
delete
del
document
doc
E
edit
...
- 2010-05-04 11:25
- 浏览 773
- 评论(0)
一、 函数参数传递机制的基本理论
函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的
参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。
值传递(passl-by-
value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个
副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
引用传递(pass-by-
referen ...
- 2010-04-30 15:23
- 浏览 624
- 评论(0)
此处的”非正常断开”指TCP连接不是以优雅的方式断开,如网线故障等物理链路的原因,还有突然主机断电等原因
有两种方法可以检测:1.TCP连接双方定时发握手消息 2.利用TCP协议栈中的KeepAlive探测
第二种方法简单可靠,只需对TCP连接两个Socket设定KeepAlive探测,所以本文只讲第二种方法在Linux,Window2000下的实现(在其它的平台上没有作进一步的测试)
Windows 2000平台下
//定义结构及宏
struct TCP_KEEPALIVE {
u_longonoff;
u_longkeepalivetime;
u_longkeepalivei ...
- 2010-03-03 14:22
- 浏览 732
- 评论(0)
作者:
Kevin He
,
2003-09-02
原文地址:
http://www.linuxjournal.com/article/6788
译者:
Love. Katherine
,
2007-04-14
译文地址:
http://blog.csdn.net/lovekatherine/archive/2007/04/14/1564731.aspx
转载时务必以超链接形式标明文章原始出处及作者、译者信息。
讨论大端与小端、比特序与节序的区别,以及它们 ...
- 2010-03-03 10:24
- 浏览 660
- 评论(0)
为什么要对齐?
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特
定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。
对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问
一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对
数据存放进行对齐,会 ...
- 2010-03-02 15:46
- 浏览 746
- 评论(0)
1)auto
这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。
(2 ...
- 2010-03-01 16:19
- 浏览 647
- 评论(0)
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放
,存放函数的参数值,局部变量的值等。其操作方式类似于
数据结构中的栈。
2、堆区(heap) ...
- 2010-03-01 15:45
- 浏览 500
- 评论(0)
深入学习的引起:csdn论坛某诡异问题
转抄如下:
view plain
copy to clipboard
print
?
class
Test
{
public
:
int
i;
int
j;
};
int
crashme(Test*t)
{
//??在这里干点什么能让下面的代码崩溃
}
int
main(
int
argc,
char
**argv)
{
Test*t=new
T ...
- 2010-03-01 15:43
- 浏览 950
- 评论(0)
C/C++函数调用约定与函数名称修饰规则探讨
使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有 问题,但是链接的时候总是报告函数不存在(经典的LNK
2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C++的代码混合使用的情况下或
在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其实这都是函数调用约定(Calling
Convention)和函数名修饰(Decorated
Name)规则惹的祸。函数调用方式决定了函数参数入栈的顺序,是由调用者函数还是被调用函数负责清除栈中的参 ...
- 2010-03-01 15:41
- 浏览 750
- 评论(0)
Posted on Tuesday, May 24, 2005 3:23 PM #C & C++
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:D ...
- 2010-03-01 15:39
- 浏览 707
- 评论(0)
VIM中常用的替换模式总结。
1,简单替换表达式
替换命令可以在全文中用一个单词替换另一个单词:
:%s/four/4/g
“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进 ...
- 2010-02-25 10:48
- 浏览 734
- 评论(0)
Linux
系统启动过程:
1、
主机开机后,就是硬件检测(
POST
),通过后再根据
BIOS
里面设置的启动顺序找到启动驱动器(如硬盘,光驱等),计算机启动都要经过这一步,没什么好说的啦。
2、
读取硬盘
MBR
,启动系统引导程序(如
grub
、
lilo
),再由系统引导程序加载
Linux
的核心(
kernel
)
系统引导程序引导并运行核心可以分两个阶段:
一阶段:即
BIOS
从
MBR
- 2010-02-24 11:36
- 浏览 511
- 评论(0)