繁体   English   中英

使用size_t进行void指针仿真

[英]Using size_t for void pointer emulation

int bar(const size_t value) {
  char *d = (char*) value; 
  *d = 'B';
}

int main() {
    char bar = 'A';
    bar((size_t)&d);
}
  1. 使用size_t来模拟void指针类型合法吗? 为什么?

  2. 有什么好处/缺点?

对于数据指针,只要整数类型足够宽以保持指针不丢失,就可以很好地定义从指针到整数类型的回程到原始指针类型。

size_t已定义为保持对象大小。 它们通常足够大以容纳指针表示,但这不能保证,它们是假设不成立的实现。

uintptr_tintptr_t是定义为足够宽以保持指针而不丢失的整数类型。

对于函数指针,我知道没有这样的保证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM