微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – sizeof工作如何?我该怎么写我自己的?

我知道C并且知道自己的函数sizeof,但是我需要编写自己的sizeof函数,所以请说明它的工作原理?该参数有什么作用?

解决方法

你没有提供任何有意义的细节,你想做什么,所以很难弄清楚你需要什么.

你可以通过你自己的模板功能来“包装”sizeof

template <typename T> size_t my_sizeof() {
  return sizeof(T);
}

然后使用它作为

size_t s = my_sizeof<int>();

有时可以遇到一个请求来实现类似sizeof的功能,而不使用sizeof.像这样的请求没有任何实际意义,但有时被用作作业作业.人们可以做到如下

template <typename T> size_t my_sizeof() {
  T t;
  return (char *) (&t + 1) - (char *) &t;
}

这将需要一个认的可构建的T.一个较少的限制,但正式非法的解决方案(一个黑客)将是类似的

template <typename T> size_t my_sizeof() {
  return (char *) ((T *) NULL + 1) - (char *) (T *) NULL;
}

上述实现实现基于类型的sizeof.

试图模拟基于价值的sizeof的功能可能如下所示

template <typename T> size_t my_sizeof(const T& obj) { 
  return my_sizeof<T>();
}

但是,如果至少因为内置的sizeof不能评估其参数,那么这不会远远地等同于内置的sizeof.

最后,这些实现都不会产生积分常数表达式(ICE),如内置sizeof所示.在当前版本的语言中不可能实现ICE的制作.

无论如何,这一切当然完全没有实际价值.只要使用sizeof,当你想知道的大小.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐