*reinterpret_cast



  • ich habe ein kleines Programm und raff nicht ganz was der *reinterpret_cast macht

    using namespace std;
    
    int main(int argc, char** argv)
    {
    int serial, r;
    long mtype=0;
    char buffer[MAXTEXT + sizeof(long)];
    cout << "\n*** Zugriffscode für die Warteschlange: ";
    serial = msgget(QKEY, IPC_CREAT | S_IRWXU | S_IROTH);
    cout << serial << endl << endl;
    while(mtype !=TERMINATOR)
    {
    cout << "Neue Nachricht. Typ eingeben: ";
    cin >> mtype;
    cin.ignore();
    cout << "                     Text eingeben: ";
    cin.getline(&buffer[sizeof(long)], MAXTEXT, '\n');
    *reinterpret_cast<long*> (buffer) = mtype;
    r = msgsnd(serial,buffer,strlen(&buffer[sizeof(long)]),0);
    cout << "..." << (r?"ERROR":"OK") << endl;
    }
    sleep(1);
    r=msgctl(serial,IPC_RMID,0);
    cout << endl;
    cout << "*** Warteschlange gelöscht: "
    cout << (r?"ERROR:"OK") << "\n\n";
    return 0;
    }
    


  • Hallo,
    der reinterpret_cast castet den char-Zeiger buffer in einen Zeiger auf long. Dieser Zeiger wird dann dereferenziert. Das Ergebnis ist also ein long. Hier werden also die ersten sizeof(long)-Bytes des char-Arrays buffer als long interpretiert und mit dem Wert von mtype beschrieben.


Anmelden zum Antworten