加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 是否允许将char []强制转换为unsigned char *?

发布时间:2020-12-16 09:49:35 所属栏目:百科 来源:网络整理
导读:我正在使用一些具有以下方法的类: const unsigned char *sData 作为参数. 当我打电话给以下时: char dataIn[]="The quick brown fox jumps over the lazy dog"; obj.CRC(dataIn,strlen(dataIn),checksum); // compute checksum 我收到了错误: Error 1 err
我正在使用一些具有以下方法的类:

const unsigned char *sData

作为参数.

当我打电话给以下时:

char dataIn[]="The quick brown fox jumps over the lazy dog";     
obj.CRC(dataIn,strlen(dataIn),&checksum); // compute checksum

我收到了错误:

Error   1   error C2664: 'void crcClass::CRC(const unsigned char *,size_t,unsigned int *)' : cannot convert parameter 1 from 'char [44]' to 'const unsigned char *'

所以我修改了上面这样的代码并且它有效:

obj.CRC((const unsigned char*)dataIn,&checksum); // compute checksum

修改我做得好吗?

解决方法

没关系,但是对于“安全”,请考虑使用reinterpret_cast< const unsigned char *>(dataIn).

从reinterpret_cast不能删除const或volatile的意义上讲,这是更安全的,而C风格的强制转换可以.如果你不想删除限定符,那么当你弄错它时代码就很难编译.

当然,在这种情况下,错误的可能性很小 – 目的地是const限定的,你可能会注意到源是否是挥发性合格的.但是养成让编译器帮助你的习惯仍然很有用,而且有些人会认为代码更容易阅读.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读