【发布时间】:2014-11-04 07:38:58
【问题描述】:
我必须对 const 数组的成员进行类型转换。但是,precedence 在这里的工作方式让我感到困惑。以下 2 个选项是否导致相同的指针?
const char *pPacket;
char * destination_pointer;
选项 1:
destination_pointer = &pPacket[index];
选项2:
destination_pointer = (char *)&pPacket[index];
【问题讨论】:
-
同样,不需要强制转换。 memcpy 将内存块从一个地方复制到另一个地方,它不关心源或目标的底层类型。
-
这只是为了消除 LINT(静态代码分析工具)警告!
-
为什么不改签名(
myClass::GetPacket(char *pPacket))? -
@Aad:警告是有充分理由的。因为(大概)是编译器错误。如果函数不将其视为
const,为什么函数会采用const指针? -
无论如何你都应该使用
const_cast而不是C-cast。
标签: c++ arrays pointers casting type-conversion