Speicherzugriffsfehler in meinem RPG-Programm
-
und wenn man eine liste (ein char-array) übergeben wollte, wie müsste man das tun?
-
Dexter1997 schrieb:
und wenn man eine liste (ein char-array) übergeben wollte, wie müsste man das tun?
Lass dich nicht verwirren, du machst alles richtig. Wade1234 hängt sich bloß an den Feinheiten von Arrays als Funktionsparametern auf. Wenn man in C ein Array an eine Funktion übergibt, dann wird nicht das Array in die Funktion kopiert, sondern ein Verweis auf das übergebene Array.
Guck mal: https://ideone.com/JqEVsv
Was du folglich noch verbessern könntest, ist
const char name[]
, da du keine Veränderungen an dem übergebenen Feld vornimmst, sondern nur eine Kopie des Inhalts erstellst.
-
SeppJ schrieb:
[...]
const char name[]
[...]Wie ist es eigentlich sprachgeschichtlich dazu gekommen, daß soetwas hässliches in Parameterlisten überhaupt gültig ist? War soetwas auch in K&R-Style C schon erlaubt, eg:
void foo(name) char name[]; {}
?
-
Swordfish schrieb:
War soetwas auch in K&R-Style C schon erlaubt, eg:
void foo(name) char name[]; {}
?
Eher nicht, da
Wikipedia: Varianten der Programmiersprache C schrieb:
Neuerungen von C90
...
- void für leere Funktionsparameter-Deklarationen und zur Kennzeichnung von Funktionen ohne Returnwert sowie void* für einen universell kompatiblen Zeigertyp kamen neu hinzu.
- Die neuen Schlüsselwörter const, volatile und signed wurden eingeführt.
...
-
Dexter1997 schrieb:
und wenn man eine liste (ein char-array) übergeben wollte, wie müsste man das tun?
es ging einfach darum, dass eine liste eigentlich etwas völlig anderes ist, als das, was du da hast und dass man bei dem wort liste idr an sowas denkt: https://de.wikipedia.org/wiki/Liste_(Datenstruktur)
also nur so für zukünftige unterhaltungen
-
DirkB schrieb:
Swordfish schrieb:
[...]
Eher nicht, da [...]
wtf?
-
Wade1234 schrieb:
Dexter1997 schrieb:
und wenn man eine liste (ein char-array) übergeben wollte, wie müsste man das tun?
es ging einfach darum, dass eine liste eigentlich etwas völlig anderes ist, als das, was du da hast und dass man bei dem wort liste idr an sowas denkt: https://de.wikipedia.org/wiki/Liste_(Datenstruktur)
also nur so für zukünftige unterhaltungen
Und was wäre ein deutsches Wort für Array, das unmißverständlich ist, oder gibt es da keinen deutschen begriff? obwohl, die deutsche Sprache hat ja 5 mal so viele Wörter wie die englische, ich hoffe man findet da eins
-
Feld.
-
Alles klärchen!
-
Swordfish schrieb:
Feld.
In der deutschen Übersetzung vom K&R (1. Auflage) heißt es Vektor.
Fast überall anders heißt es aber Feld.
-
DirkB schrieb:
[...]
Du mir besser sagen, was in Deinem "Eher nicht, da [...]" sich irgendwie auf mein Beispiel beziehen tut, hugh.
-
Swordfish schrieb:
wtf?
Bei K&R war weder
const
nochvoid
bekannt.Daher keine hässliche Parameterliste und schlechtes Beispiel.
-
Was haltet ihr von diesem Buch?
Mit diesem lerne ich gerade.https://www.amazon.de/als-erste-Programmiersprache-Einsteiger-Fortgeschrittenen/dp/3834812218
Eine lustige Geschichte nebenbei:
Unser C-Professor hat uns Bücher von Jürgen Wolf empfohlen, und das Standardwerk von Ritchie und Kernighan ein "schlechtes Buch" genannt. Ich frage ihn warum es schlecht sei, er sagte: Es ist didaktisch schlecht aufgebaut.
-
DirkB schrieb:
Swordfish schrieb:
wtf?
Bei K&R war weder
const
nochvoid
bekannt.wo siehst Du in meinem Beispiel ein
const
. Dasvoid
denk dir bitte einfach weg. Die Frage war, obT var[]
auch in K&R Parameterlisten schon stattT * var
üblich war.
-
Achso.
Ja, das war möglich:
Aus https://ia801303.us.archive.org/1/items/TheCProgrammingLanguageFirstEdition/The%20C%20Programming%20Language%20First%20Edition%20%5BUA-07%5D.pdf Seite 36.strlen(s) /* return length of s */ char s[]; ( int i; i = 0; while (s[i] != '\0') ++i; return(i); }
Das
const
hattest du von SeppJ zitiert (der es vorher angemerkt hatte), und das Zitat als hässlich bezeichnet.
Das du die [] gemeint hast, ist nicht so deutlich rüber gekommen.
-
Dexter1997 schrieb:
Und was wäre ein deutsches Wort für Array, das unmißverständlich ist, oder gibt es da keinen deutschen begriff? obwohl, die deutsche Sprache hat ja 5 mal so viele Wörter wie die englische, ich hoffe man findet da eins
also ich persönlich bevorzuge http://dict.tu-chemnitz.de für übersetzungen und wenn ich da array eingebe erhalte ich
Variablenfeld {n}; Datenfeld {n}; Feld {n} (Variablenfolge, die gemeinsam angesprochen wird) [comp.] [anhören]
das funktioniert z.b. auch mit pointer und integer.
-
Eine Übersetzung von Pointer = Zeiger ist auch leicht, aber Feld finde ich schon verwirrend. Es werden auch andere Dinge "Feld" genannt, z.B. habe ich es schon oft für die Member-Variablen in einer Klasse gehört. Und dann ist da noch Datenfeld, das natürlich auch zu Feld verkürzt werden kann. Daher lieber Array nehmen.
-
in der deutschsprachigen literatur heißen die dinger aber wirklich feld (oder eben array). membervariablen in klassen kenne ich als attribute.
hier gibts das gemeinte feld auch noch einmal bei wikipedia: https://de.wikipedia.org/wiki/Feld_(Datentyp)
-
Wade1234 schrieb:
in der deutschsprachigen literatur heißen die dinger aber wirklich feld (oder eben array). membervariablen in klassen kenne ich als attribute.
hier gibts das gemeinte feld auch noch einmal bei wikipedia: https://de.wikipedia.org/wiki/Feld_(Datentyp)
Der verlinkte Artikel unterstreicht aber nochmals die Sprachverwirrung, weil er erklärt, dass damit alles, von der ganz abstrakten Definition als 'indizierbare Sammlung gleichartiger Dinge'; als auch sehr technische, sprachspezifische Umsetzungen dieses Konzepts (wie das in diesem Thread diskutierte Array); und diverse Abstufungen dazwischen gemeint sein können.