C-Programmierung

Stringzeiger

Mehrdimensionale Arrays als Parameter | | Dynamische Arrays

Ein Array aus Strings ist kein 2D Array sondern ein 1D Array aus Zeigern, welche auf die jeweiligen Zeichenketten zeigen.

char *s[] = {"a", "beach", "house"};
RAM -------sss---a0beach0house0--->
           |||   ^ ^     ^
           |||   | |     |
           ||----+-+------
           ||    | |
           |-----+--
           |     |
           -------

Q Warum?

variable Zeichenkettenlänge

Eine Menge an Zeichenketten kann auch als 2D Array definiert werde, dazu muss aber eine maximale nicht zu überschreitende Länge der Zeichenkette festgelegt werden:

char s[][30] = {"a", "beach", "house"};

Diese Darstellung ist einfach zu handhaben, verschwendet aber Speicher und ist bzgl. der Zeichenkettenlänge limitiert:

s[0] = a0xxxxxxxxxxxxxxxxxxxxxxxxxxxx
s[1] = beach0xxxxxxxxxxxxxxxxxxxxxxxx
s[2] = house0xxxxxxxxxxxxxxxxxxxxxxxx

Q Wie wandelt man einen String in Morsecode um?

const char str[]="SoS", *ptr=str;
const char *morse[]={".-", "-.", ...};
while (*ptr) printf(morse[tolower(*ptr++-'a']));


Mehrdimensionale Arrays als Parameter | | Dynamische Arrays

Options: