我试图在不使用sizeof函数的情况下找到整数的大小。我写了这样的东西,但它不能正常工作。它输出1。 请指正。这是我的代码。
int intSize() {
int intArray[10];
int *intPtr1;
int *intPtr2;
intPtr1 = intArray;
intPtr2 = intPtr1 + 1;
return intPtr2-intPtr1;
}
答案 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);
}