Archive for the ‘Computer Science’ Category

指针的算术运算

星期五, 06月 6th, 2008

昨天遇到的bug,发现在复制某个结构时老是不对,调了大半天才发现是指针算术运算的问题:-(.

在指针可以和整数进行加减运算。具体见圣经K&R

如果p是一个指针,n为整数。 则p + n 表示 p 之后 n 个对象的地址。 在计算p+n时, n 将根据 p指向的对象的长度按比例缩放. 例如:

[code:c++]
int * p = &a ; //假设p的地址为0x61234f0, int 为4个字节
...
p+=1; // Now, p=0x61234f4 而不是0x61234f1
[/code]
原本想在操作内存区域用字节来操作,结果忘了将p强转为(char*) -__-|||,导致p作指针加法时,偏移量不对, 然后就是一堆莫名奇妙的错误~