指针算术在行动

时间:2015-12-22 11:30:09

标签: c++

我有这样的代码

for(DWORD i = 0 ; i < dwInBuffSize/8 ; i++)
        DES.des_ecb_encrypt((des_cblock *)InBuff+i, (des_cblock *)OutBuff+i, sched, DES_DECRYPT) ;

,其中

typedef unsigned char des_cblock[8];

我相信由于指针算术:

(des_cblock *)InBuff+i

指针前进了8个字节?而不是1?

inBuff只是字节数组和outBuff

1 个答案:

答案 0 :(得分:2)

是的,如果您执行(T*)someptr+x,则x会乘以sizeof(T)

同样适用于static_cast<T*>(somepttr)+x当然,在添加x之前更容易看到强制转换。