C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – *(int *)(缓冲区)是什么意思?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我正在阅读的c代码中,发现了以下内容.
任何人都可以帮助我理解以下陈述的作用吗?
char buffer[4096];
// some code
int size = *(int*)(buffer);

解决方法

TL; DR:这段代码很糟糕,忘了它并继续前进.

(缓冲区)这个括号表示程序员对自己的编程能力不安全.

由于缓冲区是一个字符数组,因此使用标识符缓冲区可以为您提供指向第一个元素的指针:char指针.

(int *)这是一个转换,将char指针转换为int指针.

*获取该整数指针的内容,结果存储在整数大小中.

请注意,此代码完全不安全.许多指针转换会调用定义不明确的行为.可能存在对齐问题.可能存在指针别名问题(Google“严格别名规则”).此特定代码也依赖于endianess,这意味着它要求字符数组的内容具有给定的字节顺序.

总的来说,在执行此类操作时,使用诸如int或char(可能是signed)之类的签名类型没有任何意义.特别是,char类型非常有问题,因为它具有实现定义的签名,应该避免.请使用unsigned char或uint8_t.

稍差的代码看起来像这样

#include <stdint.h>

uint8_t buffer[4096];
// some code
uint32_t size = *(uint32_t*)buffer;

大佬总结

以上是大佬教程为你收集整理的c – *(int *)(缓冲区)是什么意思?全部内容,希望文章能够帮你解决c – *(int *)(缓冲区)是什么意思?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。