Beruflich Dokumente
Kultur Dokumente
Sind in der Lage, mehrere Werte eines Datentyps (!) unter einem Bezeichner
zu speichern
Der Zugriff auf Arrayelemente erfolgt über den Arrayindex von 0 bis „n-1“
a[0] = 1; // Zuweisung
Text1: Ich bin eine Zeile\0 Text2: Ich bin eine andere\0
#include "string.h"
int strncmp (const char* str1, const char* str2, const size_t len);
Mehrdimensionale Arrays
Index: 0 1 2 3 4 5 6 7 8 9
a[0]... a[5]...
Bytes !
p = a; Identisch !
int b; Variablendefinition
int * p; Definition eines Pointers auf int
- Es findet keine Bereichsüberprüfung statt. (Es wird ja nur die Adresse übergeben)
- Bei Aufruf erfolgt automatisch eine Umwandlung in einen Pointertyp (oder Typ
wird explizit angegeben)
int main ()
{
int b[10];
function (b, 10); // Funktionsaufruf
// oder
function (&b[0], 10);
return 0; Übergabe einer Adresse
} „Call by reference“
int main ()
{
int b[10];
function (b, 10); // Funktionsaufruf
return 0;
}
int feld[10];
int* ptr1 = &feld [1];
int* ptr8 = &feld [8];
int anzahl = ptr8 – ptr1; … Wert 7 (nicht 7*4...!)
// ergibt den
//Besser:
ptrdiff_t anzahl = ptr8 – ptr1; //vereinbart in stddef.h
int i;
int* ptr1 = &i;
int* ptr2 = ptr1;
int* ptr3 = ptr2 + 5;
i = (int) f;
Jetzt:
char* pchar = (char*) ptr1; // mit int* ptr1 von oben
Vergleichsoperatoren
1) strcpy nachprogrammieren
defghi\0 defghi\0
jklmnopqrst\0 jklmnopqrst\0
abc\0 abc\0
Klassisch…:
main (int argc, char *argv[])
{...}
argc: 3
argv: echo\0
hello\0
world\0
So weit, so gut …