*Markus: Einen einfachen String deklarieren

Beitrag lesen

Hallo,

Ok, eigentlich ganz einfach aber was bedeutet das & zeichen an der Variable a? Und wieso das %d?

& ist der Referenzoperator, d.H., dass hier die _Adresse_ einer Variable übergeben wird, wo der Wert dann hingeschrieben wird. C ist nun mal hardwarenaher, als andere Programmiersprachen.

Ich weiß das dieses %d für eine Ganzzahl steht, aber wieso muss man dieses auch hier angeben?

Überlege dir mal genau, was Werte in Variablen im Endeffekt sind: Eine endliche Reihe von Nullen und Einsen. C weiß nicht, dass diese Nullen und Einsen nun ein Integer sein soll. Diese Nullen und Einsen sind also verschieden interpretierbar. Dieses kleine Programm verdeutlicht dies:

  
#include <stdio.h>  
  
int main(void)   {  
    char var;  
    scanf("%c", &var);  
    printf("var als Zahl = %d\n", var);  
    printf("var als Zeichen = %c\n", var);  
  
return 0;  
}  

Gib doch mal ein einfaches Zeichen, z.B. ein D ein, nachdem du das Programm gestartet hast.

Und wie kann ich eine String-Variable deklarieren?

So etwas gibt es in C nicht. Strings sind einfach Zeichenarrays mit einem abschließenden \0. Da dir C viele Freiheiten (zum Nachteil der Sicherheit) bietet, musst du nun mal desöfteren Hand anlegen, um "grundlegende" Dinge, wie Strings erledigen zu können.

  
#include <stdio.h>  
  
int main(void)   {  
  
    char string[] = "Das ist ein String";  
    printf("%s\n", string);  
  
return 0;  
}  

Der Compiler weiß, wie groß das Array sein muss, und fügt beim Kompilieren noch das abschließende \0 hinzu.

int main(void)
{
  anweisungen;
}

und mal so:

main
{
  anweisungen;
}

Warum mal int und void als argument und mal ohne?

Ich würde int main(void) als richtig bezeichnen, denn jedes Programm sollte an das aufrufende Betriebssystem zurückliefern, ob es erfolreich ausgeführt wurde, oder nicht, was mit "return 0" am Schluss der Main-Funktion bewerkstelligt wird. Da 0 ein Int ist, heißt es "int main(void)", da main ein "int" zurückliefert.

Markus