N
Nein, verdammt nochmal nicht "\0".
Es gibt Stringliterale. Diese beginnen und enden mit ". Solche Literale sind Werte im Arbeitsspeicher, die fest kodiert sind. Um sie an Funktionen zu übergeben brauchst du einen const char* (Pointer).
Bei int Werten ist das anders. Die sind direkt in einer Variablen gespeichert.
Um das eine Funktion zu übergeben, musst du nur die Variable übergeben, in diesem Fall hat sie den Typen int.
Du kannst auch die Adresse übergeben, dann kann ein und dieselbe Variable in einer Funktion verändert werden. Da der Typ int und kein int-Pointer ist, brauchst du den Adressoperator & um die Adresse zu übergeben.
Dann gibt es noch chars. Ein char speichert ein Zeichen, eingeschlossen in '. Intern werden die Zeichen in den Zeichenliteralen nach der ASCII-Tabelle in Zahlen umgewandelt. Aus '\0' wird 0. So weit so gut.
Es gibt noch char-Arrays. Diese sind eigentlich genauso wie int-Arrays:
int int_arr [] = {1,2,3,4,5};
char char_arr[] = {'a', 'b', 'c', 'd'};
Um Arrays an Funktionen zu übergeben, übergibt man einen Pointer auf die Anfangsadresse und die Länge, damit die Funktion weiß, wie groß das Array ist.
Da ein Array automatisch in ein Pointer auf das erste Element konvertiert werden kann, braucht man keinen besonderen Operator.
void foo(int *arr, int size)
...
int arr[] = {...};
foo(arr, size_von_arr);
Nun hat man sich jedoch einen Trick bei char-Arrays überlegt, die als String dienen sollen. Damit man nicht manuell zählen muss, hat man sich ein Zeichen überlegt, was das Ende markiert '\0' bzw 0 als Zahl. Funktionen, die nun ein char-Array brauchen, übergibt man nur die Anfangsadresse, die Funktion arbeitet dann so lange, bis sie auf ein '\0' trifft.
void string_foo(char *arr)
{
for (int i = 0; arr[i] /* oder ausgeschrieben: arr[i] != '\0' (oder eben 0)*/; ++i)
cout << arr[i];
}
Bei String Literalen (wir erinnern uns, das Zeug zwischen "), wird die '\0' bzw 0 automatisch angefügt. Dein "\0" besteht in Wirklichkeit also aus zwei Zeichen: Dem eigentlichen String, bestehend aus '\0' und dem automatisch angefügten Terminierer '\0'.
Und weil folgendes bei längeren Strings ziemlich umständlich aussieht, gibt es einen Trick:
Anstatt:
char arr[] = {'T', 'e', 'x', 't', '\0'};
Kann man auch einfach schreiben:
char arr[] = "Text";