Original von KingKolja
Ich verstehe chrizels Ava nicht. :cry:
Ich verstehe chrizels Ava nicht. :cry:
Ich kann dir das Programm auch mal erklaeren:
Code:
#include <stdio.h>
int main(int argc, char **argv)
{
puts("hello");
return 0;
}
Zeile 2 ist eine sogenannte Funktionsdefinition d.h. hier wird eine Funktion definiert. In diesem Fall sogar eine ganz spezielle, naemlich die Funktion main. Diese Funktion ist der Einstiegspunkt des Programms d.h. wenn man das Programm spaeter startet, wird der Code innerhalb von main als erstes ausgefuehrt. Vor dem Namen der Funktion (in dem Fall "main") steht immer der Rueckgabetyp einer Funktion. In diesem Fall ist das int. int steht fuer Integer, d.h. auf deutsch eine integrale Zahl bzw. einfach ausgedrueckt eine ganze Zahl -- technisch ausgedrueckt ein 32 bit Integer d.h. eine Zahl von -4294967296 bis +4294967296 oder so.
Nach dem Funktionsnamen (im Beispiel also "main") stehen immer die Funktionsparameter in Klammern. Die Funktion main hat hier zwei Parameter: "int argc" und "char **argv". Der erste Parameter "int argc" sagt aus, dass er vom Typ int sein soll (=Ganzzahl) und innerhalb der Funktion main den Namen argc haben soll. Der zweite Parameter "char **argv" sagt aus, dass er vom Typ "Pointer auf Pointer auf char" sein soll und innerhalb der Funktion main den Namen argv haben soll. Was Pointer sind ist etwas mehr zu erklaeren, ich lasse das hier mal aus.
argc steht fuer "argument count" und argv fuer "argument vector", letztendlich wird hier die Anzahl der Programmparameter uebergeben, die man beim Programmaufruf mitgeben kann, und letztendlich in argv dann ein Array ueber das man auf diese letztendlich kommt. Im Beispiel werden diese Parameter aber nicht verwendet, also eigentlich unnoetig.
Die geschwungenen Klammern in Zeile 4 und 7 sagen aus "hier drin steckt der Code der Funktion". D.h. der Code der ausgefuehrt werden soll wenn die Funktion aufgerufen wird. Im Beispiel wird die main automatisch aufgerufen, d.h. letztendlich ist das der Code der bei unserem Programm ausgefuehrt wird. In dem Falle also ganz einfach: puts("hello"); und return 0;
puts("hello"); schreibt letztendlich das Wort "hello" auf den Bildschirm und macht eine neue Zeile.
return 0; bricht die Funktion ab und gibt etwas zurueck, in diesem Fall 0. Das ganze mit argc und argv und dem return 0 haengt mehr mit der Unix-Welt zusammen, wo jedes Programm Parameter haben kann und auch einen Statuscode zurueckgeben kann, ob es korrekt ausgefuehrt wurde oder nicht. In dem Fall geben wir 0 zurueck, was soviel heisst wie "das Programm wurde normal ausgefuehrt". Das ist mehr eine Konvention, man koennte hier irgendeinen Wert zurueck geben. Der Witz ist, man kann diesen Statuscode dann in Shell-Scripten verwenden und z.B. bestimmte Dinge durchfuehren wenn das Programm nicht korrekt ausgefuehrt wurde. etc. pp.
Wenn wir also das Programm kompilieren:
Code:
chrizel@latitude:~$ gcc -o test test.c
Code:
chrizel@latitude:~$ ./test
Code:
hello