Masterstudent Informatik seit WS 12/13
char
-Zeichenchar string[10];
'\0'
// Den Zeichen lassen sich nacheinander einzelne Werte zurordnen
char string[10] = {'Z', 'e', 'i', 'c', 'h', 'e', 'n', 'k', 'e',
't', 't', 'e', '\0'};
// Es ist jedoch bequemer einen literalen String zu verwenden
char string[10] = "Zeichenkette";
// Hier wird automatisch ein Array mit der richtigen Größe erzeugt
char string[] = "Zeichenkette";
// Äquivalent zum 3. Beispiel
char *string = "Zeichenkette";
stdlib.h
notwendig:#include <stdlib.h>
void *malloc(size_t size)
size
BytesNULL
void *calloc(size_t num, size_t size)
num
ist die Anzahl der gewünschten Elementesize
ist die Größe eines Elements in Bytesvoid *realloc(void *ptr, size_t size)
malloc
, calloc
oder realloc
reserviert wurden*ptr
in einen neuen Speicherbereichvoid *free(void *ptr)
malloc
, calloc
oder realloc
reserviert wurden#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
char *string;
string = malloc(27); // Speicher fuer 26 Zeichen
if (string == NULL) {
printf("Fehler bei der Speicherzuweisung.");
return 1;
}
for(i = 0; i < 26; ++i) // String beschreiben
*(string + i) = 65 + i;
*(string + 26) = '\0'; // Stringende-Zeichen
printf("%s\n", string); // Ausgabe
return 0;
}
stringmalloc.c
$ gcc -g -Wall -o stringmalloc stringmalloc.c
$ ./stringmalloc
ABCDEFGHIJKLMNOPQRSTUVWXYZ
struct mytype {
int value;
};
int main() {
struct mytype a, *p;
p = &a;
a.value = 1;
(*p).value = 2;
p->value = 3;
return 0;
}
structs.c
Beispiel
#include <stdio.h>
typedef struct type {
int alpha;
double beta;
} mytype;
int main() {
mytype y, *p;
p = &y;
y.alpha = 33; // oder p->alpha = 33
p->beta = 2.25; // oder y.beta = 2.25
printf("y.alpha = %d\ty.beta = %f\n", y.alpha, y.beta);
printf("p->alpha = %d\tp->beta = %f\n", p->alpha, p->beta);
return 0;
}
arrow.c
$ gcc -g -Wall -o arrow arrow.c
$ ./arrow
y.alpha = 33 y.beta = 2.250000
p->alpha = 33 p->beta = 2.250000
Modularisierung
Modularisierung
- Lösungen großer Probleme sorgt häufig für komplexe Projekte
- Daher werden Probleme in kleinere Teilprobleme aufgeteilt
- Jedes Teilproblem wird dann von einem eigenen Modul bearbeitet
- Hiding-Prinzip:
- Funktionalität eines Moduls wird durch eine Schnittstelle spezifiziert (Header-Datei)
- Programme binden nur den Header ein
- Eigentliche Funktionalität bleibt verborgen
Fragen?
Lizenz
Dieses Werk bzw. Inhalt steht unter einer
Creative Commons Namensnennung
Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz
Markus Holtermann, Tino Kutschbach