was wäre der unterschied zwischen
char *String[]="bla bla bla"; (was macht das "*" ? warum wird mal nach char* mal vor variablenname geschrieben?)
printf("%s", String);
und
printf("%s", &String);
Der Typ 'char' bezeichnet genau ein Zeichen (normalerweise
ein Byte). Ein String wird in C als ein Array von 'char'-Zeichen
gehandhabt, wobei das Ende des Arrays durch eine Null gekennzeichnet wird.
Beispiel: char *text = "Hallo Welt!";
In diesem Fall ist text eine Pointer-Variable. Die
Deklarationssyntax kann man in etwa so lesen:
"Wenn ich auf die Variable text den Dereferenzierungsoperator '*'
loslasse, so ist das Ergebnis vom Typ char".
Die Schreibweise char *text[] = ... macht für eine einzelne
Zeichenkette keinen Sinn: Hier wird ein Array von Pointern auf
Zeichenketten angelegt.
Guck Dir mal folgendes Beispiel an, dann
wird evtl. einiges klarer:
#include<stdio.h>
int main(void) {
char *text = "Hallo Welt!";
char *tmp;
printf("Startadresse des Strings = %p\n", text);
for(tmp=text; *tmp; ++tmp)
printf("Addresse: %p - Zeichen: %c (0x%2x)\n", tmp, *tmp, *tmp);
return 0;
}
MfG
Andreas