Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
simbad
unregistriert
simbad
unregistriert
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Offenbar nicht. Wäre aber besser gewesen. Du hast Dir nämlich trotz Deines Zitats nicht mehr Recht verschafft als vorher, auch wenn Du das anders siehst. Spannend finde ich in diesem Zusammenhang z.B. wie Du den Teil mit dem String-Literal gekonnt ignorierst.Aber ich habe keine Lust die Diskussion weiterzuführen
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C-/C++-Quelltext |
|
1 2 3 4 |
int GetClosestPairOfEnemies ( Enemy** e1, Enemy** e2 ); Enemy *attacker, *defender; int distance = GetClosestPairOfEnemies ( &attacker, &defender ); |
C#-Quelltext |
|
1 |
int GetClosestPairOfEnemies ( out Enemy e1, out Enemy e2 ); |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (13.04.2013, 13:11)
Hast du den von mir verlinkten Beitrag gelesen?Nachdem die lange Diskussion scheinbar ein Ende gefunden hat ( bzw. so langsam ) würde ich gerne wissen wofür man denn Zeiger auf Zeiger auf Datentyp braucht?
Ich sehe keinen Zweck darin, einen Zeiger auf einen anderen Zeiger zeigen zu lassen.
Danke, das du den Ausschnitt aus dem Standard rausgesucht hast, der dir Richtigkeit meiner Aussage bestaetigt:Except when it is the operand of the sizeof operator or the unary & operator, or is a string literal used to initialize an array, an expression that has type ‘‘array of type’’ is converted to an expression with type ‘‘pointer to type’’ that points to the initial element of the array object and is not an lvalue
Zwischen text und moretext gibt es keinen grossen Unterschied. Beide sind bei fast allen Anwendungen erstmal einfach die Zahl einer Speicherstelle. Eine Ausnahme ist z.b. sizeof,
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TGGC« (13.04.2013, 15:57)
Hab ich was von Compiler gesagt?Der Compiler kann nicht warnen, wenn die Variable in einem anderen Modul anders importiert wird.
Quellcode |
|
1 2 3 |
1>LINK : warning C4742: 'char * text' has different alignment in 'E:\programmierung\TestApp_Console\TestApp_Console\TestApp_Console.cpp' and 'E:\programmierung\TestApp_Console\TestApp_Console\test.cpp': 1 and 4 1>LINK : warning C4743: 'char * text' has different size in 'E:\programmierung\TestApp_Console\TestApp_Console\TestApp_Console.cpp' and 'E:\programmierung\TestApp_Console\TestApp_Console\test.cpp': 6 and 4 bytes 1>LINK : warning C4744: 'char * text' has different type in 'E:\programmierung\TestApp_Console\TestApp_Console\TestApp_Console.cpp' and 'E:\programmierung\TestApp_Console\TestApp_Console\test.cpp': 'array (6 bytes)' and 'pointer' |
Wie ist es möglich, dass man eine Zahl als void betrachten kann. Dann hätte diese Zahl ja garkeinen Datentypen und der Computer wüsste nicht was das nun sein soll oder?Zitat
Betrachten wir 73824 als Datum vom Typ int, dann ist 90008 also ein
int*, naemlich die Speicherstelle eines ints. Betrachten wir 73824 aber
wie hier als als void*, so ist 90008 also ein (void*)* kurz void**.
90008 ist nun also ein Pointer auf einen Pointer, also ein void**, die
Speicherstelle an der eine weiter Speicherstelle abgelegt ist.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
#include <iostream> using namespace std; class Enemy { public: Enemy(); int xPos; int yPos; int Funktion(); }; Enemy::Enemy() { xPos = 200; yPos = 400; } int Enemy::Funktion() { return 0; } int GetClosestPairOfEnemies ( Enemy **e1, Enemy **e2 ); int main() { Enemy *attacker = new Enemy, *defender = new Enemy; int Distance; Distance = GetClosestPairOfEnemies ( &attacker, &defender ); delete attacker; attacker = NULL; delete defender; defender = NULL; return 0; } int GetClosestPairOfEnemies ( Enemy **e1, Enemy **e2 ) { /* ... Berechnungen ... */ return 0; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
int GetClosestPairOfEnemies ( Enemy **e1, Enemy **e2 ) { /* ... Berechnungen ... */ e1->xPos = 5; return 0; } |
C-/C++-Quelltext |
|
1 |
(*e1)->xPos = 5; |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »patrick246« (13.04.2013, 16:34) aus folgendem Grund: Tippfehler, siehe Beitrag weiter unten
Werbeanzeige