【发布时间】:2013-01-22 17:09:54
【问题描述】:
关于 C 编程,我在示例代码中看到了几种情况,其中指针赋值涉及右侧操作数的显式转换,即使它已经与左侧操作数的类型匹配。举个例子:
void memcpy(u8int *dest, const u8int *src, u32int len)
{
const u8int *sp = (const u8int *)src;
u8int *dp = (u8int *)dest;
for(; len != 0; len--) *dp++ = *sp++;
}
当然,函数也在头文件中正确声明为:
void memcpy(u8int * dest, const u8int * src, u32int len);
函数已经将变量“src”定义为类型“const u8int *”,那么为什么在分配给同样类型“const u8int *”的“sp”时要进行显式转换?将“dest”分配给“dp”也是如此。
【问题讨论】:
-
没意义,也许有人刚刚学会了投射?
-
写这样的代码的人可能太害怕宇宙噪声改变他的变量类型:-)
-
他甚至不需要局部变量来查看这个函数的作用......
-
认为这可能是一些奇怪的可移植性问题的结果,但很高兴知道大多数人都同意这毫无意义。这就是我希望听到的答案。
标签: c pointers casting variable-assignment