在C++中,给出这样的数组:

unsigned char bogus1[] = {
  0x2e, 0x2e, 0x2e, 0x2e
};

有没有办法反射(reflection)bogus1找出四个字符长吗?

最佳答案

当然:

#include <iostream>

int main()
{
  unsigned char bogus1[] = {
    0x2e, 0x2e, 0x2e, 0x2e
  };

  std::cout << sizeof(bogus1) << std::endl;

  return 0;
}

发出4。通常,sizeof(thearray)/sizeof(thearray[0])是数组中的项目数。但是,这是一个编译时操作,只能在编译器知道关于“项目数”的情况下使用(例如,在不接受将数组作为参数的函数中)。为了更通用,可以使用std::vector而不是裸数组。

关于c++ - 有没有办法反射(reflection)一个数组的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2889202/

10-11 22:07