小编mtl*_*eng的帖子

如果类型匹配左侧操作数,为什么要显式转换右侧指针操作数?

关于 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++;
}
Run Code Online (Sandbox Code Playgroud)

当然,该函数也在头文件中正确声明为:

void memcpy(u8int * dest, const u8int * src, u32int len);
Run Code Online (Sandbox Code Playgroud)

该函数已经将变量“src”定义为“const u8int *”类型,那么为什么在分配给也是“const u8int *”类型的“sp”时会给出显式转换?将“dest”分配给“dp”也是如此。

c pointers casting variable-assignment

3
推荐指数
1
解决办法
568
查看次数

标签 统计

c ×1

casting ×1

pointers ×1

variable-assignment ×1