*
Ok,
ich war den ganzen Tag aushäusig,
da bin ich nun wieder, und will versuchen, Klarheit zu bringen:
In der Tat sind die Probleme innerhalb eines C++ Programmes aufgetaucht, doch wennich mich recht entsinne, hatte die C-Fibel die Const char*. Aus diesem Grunde habe ich es hier gepostet. c++ spezifische Dinge habe ich doch nicht angesprochen ??
Am 13.10 hat Bashar mich unter Punkt 2 gefragt:
*2. Angenommen, dein strcpy-Aufruf würde strcpy(temp, name) lauten. Wohin würde strcpy die Zeichen aus «name» kopieren? (Tipp: Alloziere Speicher)
Meine Antwort drauf war*
> temp ist ein pointer auf char, also müssten die Zeichen aus "name" an der adresse beginnen, auf die temp zeigt ( &temp ) !?
Shade OfMine verstand dies nicht. Ich will versuchen, es suáuberer auszudrücken:
( korrigioert mich bitte, falls falsch)
-Ein Pointer zeigt immer auf die auf eine Speicher-Adresse and der sich das erste "Element" befindet.: alle weiteren "Teile" stehen sizeof(typus) weiter*
- den Speicherpaltz erhalte ich durch "&" vor dem Var-Namen
- für const char* c = "abc" könnte die adresse lauten ...4711.
- dann sähe die Belegung so aus:
adr....471 + 0 * sizeof(char) = a
adr....471 + 1 * sizeof(char) = b
adr....471 + 2 * sizeof(char) = c
adr....471 + 3 * sizeof(char) = 0x0
- strlen( c) liefert 3 ( ohne 0x0 )
möchte ich "c" nun als Ausgang für eine neue, zu verändernde var namens "d"
nehmen, wäre so vozugehen.
- ich erzeuge mir ein char array. zum Bsp. char buffer = char [],
und mache es um eins größer, als strlen berichtet ( 0x0 muß Platz haben)
- in diesen buffer kopiere ich meinen coant char c mit strcpy.
- dieses Arra sieht dann so aus:
b [0] => a
b [1] => b
b [2] => c
b [3] => 0x0
- möchte ich den Ihanlt von b auf "abd" andern, so weise ich zu :
b[2] = 'd';
- mit buffer rufe ich die Funktion auf, die als Param einen const char* erwartet
Puh, ich hoffe das war richtig, und ich habs gefressen.
Bliebe nur noch die Frage, wer hindert mich daran, den Inhalt von "c" zu verändern, indem ich sage
c [0] = 'A';
- Mault da der compiler ?
- oder lässt er mich dann in meine eigene Falle laufen ?
Falle in sofern, als ich mir ja am Anfang des ProgCodes wege "const" versprochen hatte, dies Ding sei konsatant ?
Hab ich das richtig verstanden ?
EInen schönen Abend noch , um 19.00 muß ich zur Orchesterprobe.
Hanns
PS.
ich habs noch nicht eingesetzt, wollt es erstmal verstehen.