steckl: Einen einfachen String deklarieren

Beitrag lesen

Hi,

Aber ich habe noch ein paar Probleme mit dem Verständniss von dem Anzeigen den ablesen von eingaben.
In einem Codeabschnitt gab es folgendes beispiel:

int a;
printf("Gebe eine Zahl ein:");
scanf("%d",&a);

Ok, eigentlich ganz einfach aber was bedeutet das & zeichen an der Variable a? Und wieso das %d?
Ich weiß das dieses %d für eine Ganzzahl steht, aber wieso muss man dieses auch hier angeben?

Der & operator steht für die Adresse der Variablen.
Wenn du eine normale Variable an eine Funktion übergibst wird von dieser Variablen innerhalb der Funktion nur eine lokale Kopie angelegt, und diese Kopie kann die Variable in der rufenden Funktion (hier scanf) nicht beeinflussen. Darum musst du hier die Adresse übergeben, damit in der Funktion direkt an die Speicheradresse geschrieben werden kann, an der die Variable steht.

Das %d brauchst du, um anzugeben, was eingegeben wird. Wenn du Beispielsweise 5 eingibst wird dies als 5 in die Variable abgespeichert. Wäre die Formatangabe jedoch %c anstatt %d würde der Ascii-Code von 5 (= 53) abgespeichert.

Und wie kann ich eine String-Variable deklarieren?
Fragen über fragen..... ;)

Den Datentyp String gibt es in C (im Gegensatz zu C++, wo man hierfür eine Klasse includieren kann) nicht. Hier musst die Zeichenkette in einzelne Character Variablen schreiben. Die Einfachste möglichkeit hierzu ist es, ein char-Array anzulegen, in das du dann die einzelnen Buchstaben schreibst. Hierfür gibt es auch Funktionen. Der Nachteil hiervon ist, dass du bereits beim Initialisieren die Länge des Arrays angeben musst. Wenn du diese nicht weisst kannst du entweder einen extrem Großen Wert angeben, der nie erreicht wird, oder eleganter (aber am Anfang auch etwas komplizierter) einen char-Pointer verwenden und dann mit dynamischer Speicherverwaltung vor jeder Änderung den benötigten speicherplatz zuzuweisen.

Aber eines gibt es was ich nun echt nicht kapiere, in den Verschieden C beschreibungen sieht man mal dieses:

int main(void)
{
  anweisungen;
}

und mal so:

main
{
  anweisungen;
}

Warum mal int und void als argument und mal ohne?
Wozu?

Die main Funktion ist immer der Hauptteil der Programms und wird immer zuerst angeführt. Das int davor gibt den Datentyp des Rückgabewerts der Funktion (bzw des Programms) an. Korrekter Weise sollte man immer das immer davor schreiben und am Ende von main "return 0;" schreiben. 0 sthet für erfolgreich ausgeführt.
Ob man die runden Klammern unbedingt braucht weiß ich nicht, aber mit "(void)" bist du wohl auf der sicheren Seite. void heißt, dass main keine Argumente erwartet. Wenn du jedoch Werte an main übergeben willst musst du dies jedoch etwas anders schreiben, als beim Aufruf von normalen Funktionen. Dies sieht dann in etwa so aus:
int main (int argc, char *argv[])

Kann mir das einer sagen? Oder auf eine nette Deutsche anfänger Hilfe verweisen?

Sorry, hier kann ich dir leider auch nicht weiterhelfen.

mfG,
steckl