Hallo zusammen,
mein erster Post
Ich sitze gerade mal bei Seite 164 bei meinem Buch, und verstehe jetzt schon nimmer wirklich warum und wieso das so ist, wie es ist^^.
Ich poste mal schnell einen kurzen Ausschnitt aus dem Buch :
So weit so klar, aber wenn mann sicher ist, dass die Variabel auf die man zeigt bereits vorhanden ist und einen Wert hat, warum benötigt man dann eine Null initialisierung?
Nun gut, ich habe mir also das Beispiel durchgelesen und dann selber etwas zusammengeschrieben :
In dem Beispiel aus dem Buch wurde auf den Zeiger über ein * zugegriffen. Wenn ich dies aber in meinem Beispiel mache bekomme ich eine : Der Operand von "*" muss ein Zeiger sein. Meldung.
Mache ich es aber ohne direkte *davor
funktioniert es ohne Probleme.
Liegt es daran, dass in dem Beispiel einfach nur ein int Wert über den Pointer verändert wird, und in meinem Beispiel eine Structur? Ich verstehe dass nicht so ganz.
Also mein Beispiel macht (glaube) ich was es soll. Wenn ich aber nach dem Buch gehe müsste ich ja eigentlich
schreiben?
mein erster Post
Ich sitze gerade mal bei Seite 164 bei meinem Buch, und verstehe jetzt schon nimmer wirklich warum und wieso das so ist, wie es ist^^.
Ich poste mal schnell einen kurzen Ausschnitt aus dem Buch :
So weit so klar, aber wenn mann sicher ist, dass die Variabel auf die man zeigt bereits vorhanden ist und einen Wert hat, warum benötigt man dann eine Null initialisierung?
Nun gut, ich habe mir also das Beispiel durchgelesen und dann selber etwas zusammengeschrieben :
C-Quellcode
- #include <iostream>
- struct member {
- int mCount=0;
- std::string mName;
- std::string mTelefon;
- void druckeInfo() {
- std::cout << "\nCounter:" << mCount << "\nName:" << mName << "\nTelefon:" << mTelefon << "\n";
- }
- };
- void changeMember(member* pMember) {
- //Pointer wird übergeben. Überprüfen auf 0
- if (pMember != NULL) {
- pMember->mCount = 1;
- pMember->mName = "Geaendert über Pointer";
- pMember->mTelefon = "08004141";
- }
- }
- int main()
- {
- std::cout << "Erstelle Member";
- member philipp;
- philipp.mCount = 0;
- std::cout << "\nBitte gebe einen Namen ein:";
- std::cin >> philipp.mName;
- std::cout << "\nBitte gebe eine Telefonnummer an:";
- std::cin >> philipp.mTelefon;
- philipp.druckeInfo();
- std::cout << "\nDie Adresse von Member lautet:" << &philipp << '\n';
- member* pPhilipp = &philipp;
- changeMember(pPhilipp);
- philipp.druckeInfo();
- }
In dem Beispiel aus dem Buch wurde auf den Zeiger über ein * zugegriffen. Wenn ich dies aber in meinem Beispiel mache bekomme ich eine : Der Operand von "*" muss ein Zeiger sein. Meldung.
Mache ich es aber ohne direkte *davor
pPhilipp->mcount=1;
Liegt es daran, dass in dem Beispiel einfach nur ein int Wert über den Pointer verändert wird, und in meinem Beispiel eine Structur? Ich verstehe dass nicht so ganz.
Also mein Beispiel macht (glaube) ich was es soll. Wenn ich aber nach dem Buch gehe müsste ich ja eigentlich
*pMember->mCount = 1;