我是 C++ 的初学者,我在理解一些代码时遇到了问题。
我有一个练习要做,编写返回大小的函数,int
不要使用sizeof()
and reinterpret_cast
。有人给了我解决方案,但我不明白它是如何工作的。你能帮我理解吗?这是代码:
int intSize() {
int intArray[10];
int * intPtr1;
int * intPtr2;
intPtr1 = &intArray[1];
intPtr2 = &intArray[2];
//Why cast int pointer to void pointer?
void* voidPtr1 = static_cast<void*>(intPtr1);
//why cast void pointer to char pointer?
char* charPtr1 = static_cast<char*>(voidPtr1);
void* voidPtr2 = static_cast<void*>(intPtr2);
char* charPtr2 = static_cast<char*>(voidPtr2);
//when I try to print 'charPtr1' there is nothing printed
//when try to print charPtr2 - charPtr1, there is correct value shown - 4, why?
return charPtr2 - charPtr1;
}
总结一下我不明白的是,为什么我们必须更改int*
为void*
然后再char*
执行此任务?为什么我们减去charPtr2
and时有结果charPtr1
,但尝试仅打印时没有显示任何内容charPtr1
?