*)Bekommt man einen Login, um seinen eigenen Code auf eure Systeme vor der Abgabe kompilieren uns somit testen zu können? Wenn ja ab wann und wird das in der KU / VO noch angesagt?
*)Ist ein struct mit dem Objekt gleichzusetzen oder gibt es Unterschiede?
Helft mir bitte dabei und korrigiert mich, wenn nötig, ob ich das richtig lese!
Frage / Beispiel 1 aud VO 1:
...
...
@@ -15,75 +16,110 @@ Frage / Beispiel 1 aud VO 1:
x.1: 0x7eac0620
x.2: 0x7eac0620
x.3: 0x1
Frage / Beispiel 3 aus VO 2:
2.1) Unter int main() werden 2 Argumente benötigt, int argc und char* argv[]. Man kann ja auch nur main(int ,argv[]) nehmen, nur bin ich mir hierbei nicht sicher ob dieses int nur zum Unterdrücken von Warnings genutzt wird oder ob es auch andere Konsequenzen hat. Welche Unterschiede entstehen bei der Nutzung von main(int, char* argv[]) zu main(int argc, char* argv[])? Was übersehe ich hier?
2.2) Was mich aber eher verwirrt ist *(argv + 1)! argv ist für mich ein array, da die Eingabe will be bla bla zu einem Array gebündelt wird, sobald ein space erkannt wird. Wie kann es dann sein, dass argv + 1 funktionieren kann? In anderen Programmiersprachen als auch dieser macht man das per argv[1], womit man direkt auf die Variabe zugreifft. Mag sein, das C++ dabei auch den Namen der auszuführenden File (oop1) als 0-tes Arraymitglied implementiert, womit eine Stelle weiter (will) die Lösung sein muss. Nur wieso funktioniert das mit argv + 1?
2.3)Soweit ich das verstanden habe erzeugt der Compiler selbst das Array argv[], speichert es ab und übergibt per Pointer char* argv[] dies an die an die Funktion übergeben wird, an die Speicheradresse platziert wird und wir per *(argv + 1) auf die Werte abrufen ist mir der Pointer an dieser Stelle verständlich.
Unter int main() werden 2 Argumente benötigt, int argc und char* argv[]. Man kann ja auch nur main(int ,argv[]) nehmen, nur bin ich mir hierbei nicht sicher ob es nur zum Unterdrücken von Warnings genutzt wird, welche Konsequenzen es hat bzw. haben kann. Könnt ihr mir bitte genau erklären wieso diese int argc oder nur int unbedingt verwendet werden muss und was der Unterschied bei der Nutzung von main(int, char* argv[]) zu main(int argc, char* argv[]) ist, damit ich nichts übersehen kann? Was mich aber eher verwirrt ist *(argv + 1)! argv ist für mich ein array, da die Eingabe will be bla bla zu einem Array gebündelt wird, sobald ein space erkannt wird. Wie kann es dann sein, dass argv + 1 funktionieren kann? In anderen Programmiersprachen macht man das per argv[1], womit man direkt auf die Variabe zugreifft. Mag sein, das C++ dabei auch den Namen der auszuführenden File (oop1) als 0-tes Arraymitglied implementiert, womit eine Stelle weiter (will) die Lösung sein muss. Da ja per char* argv[] das Array vom Compiler selbst an die Speicheradresse platziert wird und wir per *(argv + 1) auf die Werte abrufen ist mir der Pointer an dieser Stelle verständlich. Liegt es nur an der veralteten Schreibweise, weil C++ diese Schreibweise übernommen hat ohne auf das neue argv[n] Modell umzusteigen oder übersehe ich da etwas?
*/
printf("\n\n");
//Pointerdarstellung
intnumber=1;
int*ptr;
ptr=&number;
printf("x.1: %p\n",&number);//0x7fffffffdcdc
printf("x.2: %p\n",ptr);//0x7fffffffdcdc
printf("x.3: %p\n",*ptr);// 1
//std::cout << "Hello World" << std::endl;
printf("\n");
// Ist ein struct mit dem Objekt gleichzusetzen oder gibt es Unterschiede?