Systemnahe Programmierung in Chome Systemnahe Programmierung in C: Felder und Zeichenketten Prof. Dr. Uwe Schmidt FH Wedel

Felder und Zeichenketten

weiter

weiter

Felder

Deklaration
von Variablen
 
/* eine Feldvariable mit 25 Elementen */
int a[25];
weiter
besser
#define LEN 25
int a[LEN];
weiter
Indizierter Zugriff
int i;
/* lesend */
... a[i] ... ;
/* schreibend */
a[i] = ... ;
weiter
merke
Indizierung ab 0
merke
Legale Indizes: 0,1,...,LEN-1
weiter
Indexüberprüfung
#include <assert.h>
int i;
assert(0 <= i && i < LEN);
... a[i] ...
weiter
Verarbeitung
aller Elemente eines Feldes
 
1 int i;
2
3 for (i = 0; i < LEN; ++i) {
4 ... a[i] ...;
5 }
weiter
oder
1 int i;
2
3 i = 0;
4 while (i < LEN) {
5 ... a[i] ...;
6 i = i + 1;
7 }
weiter
Felder als Parameter
2 Parameter notwendig
  • Länge des Feldes
  • Zeiger auf das erste Element des Feldes
weiter
Aufruf
... f(a, LEN) ...
weiter
Funktionsdeklaration
1 ... f(int x[], int xLen) {
2 int i;
3 for (i = 0; i < xLen; ++i) {
4 ... x[i] ...;
5 }
6 }
weiter
Beispiel
1 int sum(int x[], int xLen) {
2 int i;
3 int res = 0;
4
5 for (i = 0; i < xLen; ++i) {
6 res = res + x[i];
7 }
8 return
9 res;
10 }
11
12
13 int a[3];
14 a[0] = 2;
15 a[1] = 20;
16 a[2] = 200;
17
18 ... sum(a,3) ...;
weiter
schlecht
Zuweisungen mit Feldern sind nicht möglich
schlecht
Sie müssen durch Schleifen realisiert werden

weiter

Zeichenketten

Strings
Typ
char *
Deklaration
von Variablen und Initialisierung
 
char * s = "ein Text";
weiter
schlecht
Strings sind 0-terminiert
Parameter
Zeichenketten als Parameter
 
... f(char * s) {
...
}
Ausgabe
von Zeichenketten
 
char * s;
...
printf(s); /* Vorsicht */
printf("%s",s);
Literale
für Zeichenketten werden vom Compiler in initialisierte Zeigervariablen umgesetzt.
 
printf("Hello World\n");
char * _hello_ = "Hello World\n";
printf(_hello_);
main
wird vom Betriebssystem mit zwei Parametern aufgerufen:
  1. die Anzahl der Kommandozeilen Argumente
  2. ein Feld von Zeigern auf die Strings für die Kommandozeilen Argumente
schlecht
Umspeichern von Strings sind nicht direkt möglich
schlecht
Strings werden mit strcpy umgespeichert

Letzte Änderung: 13.10.2016
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel