在不使用sizeof的情况下查找整数的大小

时间:2016-11-02 05:39:18

标签: c++ arrays pointers sizeof

我试图在不使用sizeof函数的情况下找到整数的大小。我写了这样的东西,但它不能正常工作。它输出1。 请指正。这是我的代码。

int intSize() {
 int intArray[10];
 int *intPtr1;
 int *intPtr2;
 intPtr1 = intArray;
 intPtr2 = intPtr1 + 1;
 return intPtr2-intPtr1;
}

2 个答案:

答案 0 :(得分:2)

在使用指针算法之前,将指针强制转换为char*

int intSize() {
  int intArray[10];
  char* ptr1 = reinterpret_cast<char*>(intArray);
  char* ptr2 = reinterpret_cast<char*>(intArray+1);
  return ptr2-ptr1;
}

答案 1 :(得分:-1)

如果您希望它在所有平台上运行,请使用unit8_t;它保证是一个字节。

  int intSize() {
      int base = 0;
      return reinterpret_cast<uint8_t*>(&base + 1) - reinterpret_cast<uint8_t*>(&base);
  }