私は C++ の初心者で、コードの理解に問題があります。
のサイズを返す関数を作成しint
、 and を使用しないという演習がsizeof()
あり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
と結果が得charPtr1
られるのに、 のみを印刷しようとすると何も表示されないのはcharPtr1
なぜですか?