将c语言中的寻址指针从unsigned char *转换为const char *



我想知道有多少人会在编译时计算地址转换。

e。g .

strlen API定义:

size_t strlen ( const char * str );

他们只得到const char *

但有时我用

unsigned char arr[] = "something"
strlen((const char *)arr);

只关注unsigned char *const char *

我想知道代码的成本是多少?

以这种方式进行强制转换不会带来运行时开销。它只是告诉编译器访问(或解释)变量的方式不同于它的声明方式。

在您的特定情况下,编译器足够聪明地生成代码,将char数组视为char*指针,而没有开销。

一般来说,C中的强制转换不会产生任何运行时开销。

最新更新