Arrays werden als ANEINANDERLIEGENDE Blocks im Memory definiert.

Länge: Die Länge des Arrays MUSS zur Kompilierzeit bekannt sein. Index: Beginnt bei 0

const int ARRAY_LEN = 6;
int[ARRAY_LEN] array = { 0 }; // Alle Werte auf 0 setzem

Modifzieren des Arrays

const int ARRAY_LEN = 6;
int[ARRAY_LEN] array = { 0 }; // Alle Werte auf 0 setzem

array[2] = 6; // setzte 3. Element auf 6

// AUFPASSEN BEI DER INDEXIERUNG
// Es wird keine IndexOutOfRange Exception geworfen, wenn ausserhalbt des Blockes geschrieben wird
arrray[12] = 7;
array[-3] = 9;

Initialisierung eines Arrays

int array[] = { 1, 2, 3}; // alloziert einen Array der Länge 3

Länge eines Arrays

Bevorzug

const size_t ARRAY_LEN = 100;

int array[ARRAY_LEN] = { 0 };

for (size_t i =0; i < ARRAY_LEN; i++) {
	array[i] = i;
}

„Dynamische“ Länge


int array[100] = { 0 };

// Nicht in einer Funktion möglich!!
size_t len = sizeof(array) / sizeof(array[0]);

for (size_t i =0; i < len; i++) {
	array[i] = i;
}

Mehrdimensionale Arrays

Wie ein Schachbrett


int array[2][3] = {
	{ 1, 2, 3 },
	{ 4, 5, 7}
};

array[0][0] = 5; // Zugriff

Char Arrays und Strings

In Format: %s

String terminator: Ein char array wird immer mit \0 beendet, ansonsten ist es unmöglich die Länge zu bestimmen. -> Also Grösse immer um 1 erhöhen als gewünschte Länge

char hello[] = "hello, world"; // kann modifziert werden

/*
h
e
l
l
o
,

w
o
r
l
d
\0
*/

Es ist aber möglich, den String-Terminator zu entfernen, indem man folgendes macht.


char[12] hello = "Hello, World";

String Funktionen

#include <string.h>
char[] hello = "Hello world";

// String läng bestimmen
int laenge = strlen(hello);

// String vergleich
int result = stcmp(hello, "Hi");
// 0 = beide sind gleich
// > 0 wenn der erste string einen grösseren Ascii Wert hat als der zweite
// < 0 wenn der zweite string einen grösseren Ascii wert hat als der erste

String kopieren

Kopiert source in dest, egal ob die Länge passt. Rückgabewert ist ein Pointer zur destination

char* strcpy(char dest[], const char source[]);

Kopiert source in dest, mit der maximalen Länge num Rückgabewert ist ein Pointer zur destination

char* strncpy(char dest[], const char source[], size_t num);

Strings aneinanderhängen

Hängt eine Kopie von source an destination.

char * strcat ( char * destination, const char * source );

Hängt die ersten num Zeichen von source an destination.

char * strncat ( char * destination, const char * source, size_t num );