[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Einsteigen mit C oder Pascal? [Re: C oder C++ Kurs auf Disk]



Hallo Marco

> Versuche mal, einem
> Anfaenger zu erklaeren, dass eine Zeichenkette nur ein Zeiger ist -
Na ja, eine Zeichenkette bleibt auch in C eine Zeichenkette, aber was du
vermutlich meinst ist der fuer viele gewoehnungsbeduerftige Umstand, dass
der Name eines Arrays vom Typ char gleichzeitig der Zeiger auf das erste
Element dieses Arrays ist.

Char text[] = "Hallo Welt";

Damit deklariert man zunaechst ein Array in der Laenge "Hallo Welt"+1.

Text zeigt auf text[0] also das erste Byte des Arrays. Und das ist fuer
viele C-Neulinge unverstaendlich.

> was sind ueberhaupt Zeiger? -,
Die gibt es doch in Pascal auch, oder?

> und dass man, obwohl man ja eigentlich eine
> bestimmte Laenge eingestellt hat fuer den String, getrost drueber weg
> schreiben kann.
Tja, das kann passieren. Dadurch macht sich das Programm den eigenen
Code kaput. Zeigerarithmetik ist ueberhaupt eine der haeufigsten
Fehlerquellen. Wer kennt nicht die Meldung "das Programm xxx verursachte
eine allgemeine Speicherschutzverlaetzung an Adresse xxx. Waehlen Sie
Schliessen" und so weiter.

> Ich selbst habe mir bei der zweiten(!) C-Uebung, die ich bearbeiten
> musste - zu dem Zeitpuntk hatte ich schon acht Jahre
> Programmiererfahrung in Pascal - die Konfigurationsdaten meines BIOS
> plattgemacht.
Hmmm! Die Motherboards schuetzen in der Regel das Cmos-Ram, in dem die
Konfigurationsdaten gespeichert sind und aus dem sie beim Systemstart
in den Rom-Addressbereich bei f000 geladen werden. Hast du dir das
Cmos-Ram oder die Daten ab f000 zerstoert? Ersteres scheint mir
unwahrscheinlich, wenn auch nicht unmoeglich.

So oder so wuerde mich der Code mal interessieren, aber nicht, um mein
Bios zu loeschen, sondern um zu sehen, ob mir der Fehler auffaellt.

Gruss