安全地转换为unsigned char *

时间:2013-11-28 17:05:14

标签: c++ casting

如果我需要将某些内容视为unsigned char数组,这是函数的正确方法:

int main() {
    int i = 500;
    f(&i);
}

void f(void *ptr) {
    unsigned char *byteptr = static_cast<unsigned char *>(ptr);
    ...
}

如果我没有功能怎么办?我应该使用两个static_cast,首先使用void *然后再使用unsigned char *吗?

1 个答案:

答案 0 :(得分:2)

要将指向int变量的指针转换为与unsigned char无关的类型,您需要使用reinterpret_cast

unsigned char *byteptr = reinterpret_cast<unsigned char *>(&i);

但我回应了评论者的问题:你究竟想做什么?似乎不太可能将int *转换为unsigned char *这样的任何有用的东西。