2014-11-04 44 views
0

我必须对常量数组的成员进行类型转换。但是,在这里工作的方式优先让我感到困惑。以下2个选项是否会产生相同的指针?类型转换指向C++中数组成员的指针和运算符优先级

const char *pPacket; 
char * destination_pointer; 

选项1:

destination_pointer = &pPacket[index]; 

选项2:

destination_pointer = (char *)&pPacket[index]; 
+0

同样,转换是不必要的。 memcpy将内存块从一个地方复制到另一个地方,它不关心源或目的地的基础类型。 – rainhaven 2014-11-04 07:46:43

+0

这是要完成删除LINT(静态代码分析工具)警告! – Aadishri 2014-11-04 07:59:58

+0

为什么不修复签名('myClass :: GetPacket(char * pPacket)')? – Jarod42 2014-11-04 08:19:29

回答

0

是的应该是一样的。

选项二只是明确地将数组元素转换为char *

const char *pPacket;创建一个指向不能通过指针修改的常量数据的指针。所以只要你不改变内存中的内容,它应该没问题。

0

添加/移除const/volatile不会改变指针/引用的值。