Einzelnen Beitrag anzeigen
Alt 22.11.2003, 10:41   #9
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

C Programme haben keine Empathie. Das heißt, Code zu schreiben ist technisch richtig oder nicht. Etwas hineinzugeheimsen spielt es nicht.

Die Emotion kommt mit dem Designergedanken, mit den Techniken herumzuspielen, im übrigen Bibliotheken zu verwenden.

Wichtig sind die Wertebereiche von Datentypen. Sowie die Unterscheidung von Datentypen zu Zeigervariablen, die Adressen beinhalten und EBEN NICHT Daten. Zeigervariablen können auch wiederum auf Zeiger - im Englischen "Pointer" - verweisen (z.B. char **argv <-- Zeiger oder char *argv[] <-- Array (=Feld)).

Unterschiedlich zu einem Zeiger ist ein Array. Das Array stellt eine Anfangsadresse von gleichlautenden Elementen oder Kapselschlüssen (Objekte) dar.

Einem Arraybezeichner kann keine neue rsp. andere Adresse im Programmlauf zugewiesen werden.

Einer Zeigervariablen schon.

char c; /* -128 bis +127 */
char *pc; /* Zeigervariable auf ein char Zeichen */
char yc[10]; /* Array mit 9 + 1 Elementen bei Verwendung als C String, sonst 10 Elemente. keine Überlaufprüfung ! */

Dynamische Anforderung von Speicher:

pc= malloc(10); /* 10 Bytes anfordern und die Anfangsadresse dieses 10 Byte großen Speicherblocks der Variablen pc zuweisen, pc sollte tunlichst als char *pc; deklariert sein. Alles andere ist unsaubere Programmierung. */

void *pv;

pv= pc;

Umtypisieren von Daten oder Zeigern:

int i;
char c;

i= (int) c; oder
i= c;

int *pi;
char *pc;

pi= (int *)pc; /* Vorsicht ! Dies ist bereits unsaubere Programmierung, und nur erlaubt, wenn man ein zweites (bzw. 3 weitere) Byte(s) hinter *pc (=dem Zeichen auf das die Adresse, die pc speichert, verweist) vorrätig hält.

Portabilität:

Zeichensatz (Umfang und Sortierreihenfolge)
Wertebereich von Datentypen
Reihenfolge der Stackargumente bei Funktionsaufrufen
Big vs. Little Endian (Lowbyte vor Highbyte und umgekehrt)
Interface Schnittstellen (Hüllfunktionen) zur Korrektur bzw. Anpassung von inkompatiblen Daten

~
kikakater ist offline   Mit Zitat antworten