SUCHE MIT Google
Web virtualuniversity.ch
HOME DIDAKTIK ECDL ELEKTRONIK GUIDES HR MANAGEMENT MATHEMATIK SOFTWARE TELEKOM
DIENSTE
Anmeldung
Newsletter abonnieren
Sag's einem Freund!
VirtualUniversity als Startseite
Zu den Favoriten hinzufügen
Feedback Formular
e-Learning für Lehrer
Spenden
Autoren login
KURSE SUCHEN
Kurse veröffentlichen

Suche nach Datum:

Suche mit Schlüsselwort:

Suche nach Land:

Suche nach Kategorie:
PARTNER
ausbildung24.ch - Ausbildungsportal, Seminare, Kursen... 

 
HTMLopen.de - Alles was ein Webmaster braucht

 
PCopen.de - PC LAN Netze und Netzwerke - alles was ein IT Profi und Systemtechnicker braucht

SOFTWARE
charCharacter, ASCII-Zeichen; Konstanten werden in single quotes eingeschlossen, z. B. 'c'; formal: Integer mit kleinem Wertebereich; (= 1 Byte)
intInteger; ganze Zahl, typischerweisevon der Länge eines Maschinenwortes; (2 Byte)
floatFließkommazahl (einfach genau); (4 Byte)
doubleFließkommazahl (doppelt genau); (8 Byte)
voidleer (vor allem bei Zeigern und Funktionen wichtig);

Speicherklassen

auto"normale" lokale Variable (Standard-(default-)Speicherklasse,zufällig initialisiert)
  • alle Variablen, denen nicht explizit eine Speicherklasse zugewiesen wird und die nicht außerhalb von Funktionen vereinbart werden, fallen in die Speicherklasse auto
  • man kann einer Variablen explizit die Speicherklasse auto zuordnen, indem man vor die Typangabe bei der Variablenvereinbarung das Schlüsselwort auto setzt
  • automatische Variable werden bei jedem Funktionsaufruf neu erzeugt und beim Verlassen der Funktion wieder zerstört
  • daher ist ihr Geltungsbereich auf die lokale Funktion, in der sie vereinbart wurden, beschränkt
  • dies gilt auch für Blöcke (Variablen, die innerhalb von Blöcken vereinbart werden und die in die Speicherklasse auto fallen, sind nur lokal in diesem Block bekannt)
  • auto Variablen können beliebig (nicht nur mit Konstanten) initialisiert werden
  • nicht initialisierte auto Variablen haben einen undefinierten Wert (es existiert kein Weglasswert!)
  • auto Vektoren können nicht initialisiert werden

Beispiele:

                                       int y = 1;     /* global */   
                                       int main(void)
                                         { 
                                         int x = 5; /* lokal */
                                       
                                         printf("x=%d\n",x);    /* Ausgabe: 5 */
                                           { 
                                           int x=10;
                                           printf("x=%d\n",x);  /* Ausgabe: 10 */
                                           }
                                         printf("x=%d\n",x);    /* Ausgabe: 5 */
                                         }
                                       
Das folgende Programm erzeugt einen Compilerfehler: "x nicht definiert". Da x nicht global ist, kann print() nicht darauf zugreifen.
                                       void print(void);
                                       
                                       int main(void)
                                         { 
                                         int x=5;
                                         print();
                                         }
                                       
                                       void print(void)
                                         { 
                                         printf("x=%d\n",x);
                                         }
                                       
register der "Wunsch", char- oder int-Variable im Maschinenregister zu speichern (zufällig initialisiert)
  • in dieser Speicherklasse können sich einfache Variable befinden
  • sie entspricht in ihren sonstigen Eigenschaften der Speicherklasse auto
  • der Compiler versucht register Variablen so zu verwenden, daß sie in einem wirklichen Hardwareregister der CPU gehalten werden
  • ist dies nicht möglich, so wird register ignoriert und die Variable wie auto behandelt
extern lokale Deklaration von globalen Variablen (initialisiert mit 0)
  • alle Objekte, die außerhalb von Funktionen vereinbart werden, sind in der Speicherklasse extern
  • die Funktionsnamen selbst sind ebenfalls in der Speicherklasse extern
  • externe Objekte sind ab ihrer Vereinbarung bis zum Ende des Quellencodes und sogar in anderen Quellencodedateien bekannt
  • bei der Vereinbarung eines Objektes als extern kann es sich um eine Definition oder um eine Deklaration handeln
  • die folgenden Vereinbarungen (immer außerhalb von Funktionen) unterscheiden sich wesentlich:
                                           int sp = 0;                /* Definition */
                                           double vector[N];
                                           extern int sp;             /* Deklaration */
                                           extern double vector[];
                                           
  • bei einer Definition wird eine Variable erzeugt
  • nur hier ist eine Initialisierung möglich
  • fehlt eine Initialisierung, so wird der Weglasswert 0 eingesetzt
  • bei einer Deklaration werden nur die Variableneigenschaften festgelegt, die Variable selbst muß an anderer Stelle im Quellencode definiert sein
  • Deklarationen dürfen für eine bestimmte Variable mehrmals im (gesamten) Quellencode vorkommen, eine Definition aber nur einmal

Beispiel: Text einlesen und die Häufigkeit der Zeichen zählen

                                       #include <stdio.h>
                                       #define MAXCHARS 255
                                       
                                       int count[MAXCHARS];         /* global */
                                       
                                       void print_alle (void);
                                       
                                       void main(void)
                                         { 
                                         extern int count[];        /* Deklaration von count */
                                         int c;
                                         while((c=getchar()) != EOF)
                                           count[(char) c]++ ;
                                         print_alle();
                                         }
                                       
                                       void print_alle(void)        /* kann z. B. in einer anderen Datei stehen */
                                         { 
                                         extern int count[];        /* Deklaration von count */
                                         int i;
                                       
                                         for(i = 0; i < MAXCHARS; i++)
                                           printf("%d: %d\n",i,count[i]);
                                         }
                                       
static "statische" Variable, Inhalt bleibt erhalten (initialisiert mit 0)
  • static Objekte können sowohl intern als auch extern sein
  • static Objekte innerhalb von Funktionen sind nur lokal bekannt, behalten im Gegensatz zu auto Objekten aber ihre Werte zwischen den Funktionsaufrufen bei
  • bzgl. der Initialisierung gilt dasselbe wie für externe Objekte, static Vektoren sind daher initialisierbar
  • Zeichenketten innerhalb von Funktionen sind immer in der Speicherklasse static (z.B. printf() Parameterstring)
  • static Objekte außerhalb von Funktionen sind externe Objekte, deren Namen aber nur in dieser Quellencodedatei bekannt ist
  • Beispiele zur Initialisierung eines Vektors:
                                           static int ndigit[10] = { 0,1,2,3,4,5,6,7,8,9 };
                                           char string[] = "Dies ist ein String";
                                           
Beispiel: Zwischenspeicherung von Werten in einer Funktion
                                       #include <stdio.h>
                                       
                                       char *monatsname(int);  /* Gibt Zeiger auf ein Feld zurueck */
                                       
                                       int main(void)
                                         { 
                                         int i;
                                         for(i = 1; i <= 12; i++)
                                           printf("%s\n",monatsname(i));
                                         }
                                       
                                       char *monatsname(int n)
                                         { 
                                         static char *name[] = {"falscher Monat",
                                                                "Januar", 
                                                                "Februar",
                                                                "Maerz", 
                                                                "April", 
                                                                "Mai",
                                                                "Juni",
                                                                "Juli", 
                                                                "August",
                                                                "September",
                                                                "Oktober",
                                                                "November", 
                                                                "Dezember"
                                                                }; 
                                           if ((n < 1) || (n > 12))
                                             return(name[0];
                                           else
                                             return(name[n]);
                                           }
                                       

Qualifizierer

signed vorzeichenbehaftet (default für integer, bei char implemantationsabhängig; nur für ganzzahlige Datentypen)
unsigned nicht vorzeichenbehaftet (nur für ganzzahlige Datentypen)
short int int mit evtl. kleinerem Wertebereich (2 Byte)
long int int mit evtl. größerem Wertebereich (4 Byte)
long double double mit evtl. größerem Wertebereich
const Variable kann nur gelesen werden (wird u.U. compilerabhängig ignoriert, allerdings liefert ein Verstoß eine Compiler-Warnungen)
volatile Wert wird möglicherweise durch parallel laufende Prozesse verändert. Q. verhindert "Wegoptimieren" (kann ebenfalls compilerabhängig ignoriert werden)

Außer eventuell bei char sind diese Größen nicht festgelegt, sondern abhängig vom jeweiligen Compiler. Definitiv festgelegt sind die angegebenen Mindestgrößen und die folgenden Relationen:
short <= int <= long;
float <= double <= long double.
Die tatsächliche Größe kann man den Header-files <limits.h> und <float.h> entnehmen.

DIPLOMARBEITEN UND BÜCHER

Diplomarbeiten zum Runterladen:

Suche im Katalog:
Architektur / Raumplanung
Betriebswirtschaft - Funktional
Erziehungswissenschaften
Geowissenschaften
Geschichtswissenschaften
Informatik
Kulturwissenschaften
Medien- und Kommunikationswissenschaften
Medizin
Psychologie
Physik
Rechtswissenschaft
Soziale Arbeit
Sozialwissenschaften


JOBS
HOME | E-LEARNING | SITEMAP | LOGIN AUTOREN | SUPPORT | FAQ | KONTAKT | IMPRESSUM
Virtual University in: Italiano - Français - English - Español
VirtualUniversity, WEB-SET Interactive GmbH, www.web-set.com, 6301 Zug

Partner:   Seminare7.de - PCopen.de - HTMLopen.de - WEB-SET.com - YesMMS.com - Ausbildung24.ch - Manager24.ch - Job und Karriere