Andreas Pflug: C- verständniss der Grundlagen

Beitrag lesen

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