.| Autor | Beitrag |
|---|---|
|
000 13.11.2001, 20:18 Son-Goten |
hi leutz! ich werde mir einfach nicht über die bedeutung von arrays/vektoren klar... danke Dieser Beitrag wurde am 13.11.2001 um 20:19 von Son-Goten bearbeitet. |
|
Profil || Suche |
|
001 13.11.2001, 20:25 Mazze |
Es bringt dir sehr viel! BattleTech-MOD: |
|
Profil || Suche |
|
002 13.11.2001, 20:27 greyhound000 |
Frage: |
|
Profil || Suche |
|
003 13.11.2001, 20:29 Mazze |
Soll das verarsche sein? --BattleTech-MOD: |
|
Profil || Suche |
|
004 13.11.2001, 20:30 thinktank |
ned ganz int xyz[5] ist ein array mit 6 Feldern (oder ?? :)), aber bei char str[5] sind es eigentlich 5 , da noch ein Nullbyte(oder wie wird das genannt :(?) dran gehängt werden muss. Das ist so, weil man bei C++ bei 0 anfängt zu Zählen ( ich kann nichts dafür :) ). Wieso unüberischtlicher ? int schachbrett[4/*x*/][3/*y*/] = BAUER; // oder so ;) -- |
|
Profil || Suche |
|
005 13.11.2001, 20:41 Another1 |
allgemeinee array def: type array[size]{[size2]...]}; und size is genau die size des arrays. Nur das in C 0 das 1. element is und size-1 das letzte mensch das sind grundlagen leude :P --Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
006 13.11.2001, 20:44 Son-Goten |
char sz[256]; naja... klar, dass man bei char oft mehr als ein zeichen braucht.... |
|
Profil || Suche |
|
007 13.11.2001, 20:57 Archangel |
tja, das würdest du lieber sagen, aber das gefällt C nich :p -- |
|
Profil || Suche |
|
008 13.11.2001, 21:10 Psychodad |
@greyhound: Punktvariable? |
|
Profil || Suche |
|
009 13.11.2001, 21:10 Son-Goten |
wieso? |
|
Profil || Suche |
|
010 13.11.2001, 21:14 Son-Goten |
@dad ich glaub, er spielt nimmer mit matchbox.... ;)))) |
|
Profil || Suche |
|
011 13.11.2001, 21:40 Psychodad |
*rofl* |
|
Profil || Suche |
|
012 13.11.2001, 22:03 Laser |
ok wenn du es noch nicht verstanden hast: |
|
Profil || Suche |
|
013 13.11.2001, 22:05 Kriz |
Wofür braucht man Arrays? >>> Dazu muß man ja wohl nichts mehr sagen <<< --K:R-I)Z++ |
|
Profil || Suche |
|
014 16.11.2001, 16:52 draft |
Wie bereits angedeutet, sind Arrays fuer dynamischen Code unumgaenglich. Wenn ich derartigen "Code" lese...:
...tun mir die Augen weh. Ohne Felder ist es einfach nicht moeglich, einen Speicherbereich zu allokieren, dessen Umfang erst zur Laufzeit bekannt wird. int array[4]; allokiert Platz fuer 4 4-Bytes-grosze Integer, auf die du ueber i = 0 bis i = 3 zugreifen kannst (i = Index, "Die Zahl zwischen den Klammern"). #[ ] [ ] [ ] [ ]#[ ] [ ] [ ] [ ]#[ ] [ ] [ ] [ ]#[ ] [ ] [ ] [ ]#[ ] [ ] [ ][ ][ ][ ][ ] [ ] steht fuer ein Speichersegment zu einem Byte. Da ein Integer 4 Bytes belegt, habe ich die jeweiligen Integerbereiche mit einem # getrennt- der Uebersicht halber.
Dabei wird der erste Wert der geschweiften Klammer dem ersten Element des Feldes zugewiesen, waere also Aequivalent zu array[0] = 1;. Dies macht dann z.b. Sinn, wenn man den allokierten Speicher eines Feldes schnell von eventuell uebrigen gebliebenem Muell leeren will; int array[4] = {0, 0, 0, 0};.
...wuerde also ebenfalls ein Feld von 4 Elementen erstellen, denen gleich die entsprechenden Werte zugewiesen werden. Das ist z.b. bei Strings recht praktisch, wenn man nicht alle Buchstaben zaehlen moechte :);
...gleicht:
Beim expliziten Ansprechen eines Feldes wird die Platznummer im Feld-Operatoren angegeben. Mit array[2] kann man uebrigens genauso umgehen, wie mit ich_bin_ein_einzelner_integer. --- Nun zu den Zeigern... Ein Zeiger enthaelt die absolute Speicheradresse einer Variablen. Nutzt du die Variable in einem Stueck Code, weiszt du nicht, wo sich diese befindet. Dies stellt bei der Werteuebergabe an Funktionen/Klassen dann ein Problem dar, wenn die Variable selbst bearbeitet werden soll. Es werden naemlich ohne Zeiger nur Kopien uebergeben. Schicken wir nun aber eine Speicheradresse an eine Funktion und schreiben auf diese Adresse, so wird logischerweise auch der Variableninhalt geaendert. Es ist die absolute, eindeutige Adresse, welche auf jeden Fall auf das Orginalobjekt zugreift. int variable; Speicher: 1 2 3 4 5 6 7 8 9 10 Die Zahlen ueber den einzelnen Speichersegmenten stehen fuer deren Adressen, die ich der Einfachkeit halber einfach mal als 1-10 bezeichne. unsere Variable belegt nun also bytes 1-4...
In pointer steht nun die Adresse 1, die wir ihm durch den Operatoren & zugewiesen haben. Schreiben wir nun auf pointer, werden Bytes 1-4 bearbeitet, was automatisch auch den Wert von variable aendert.
--- |
|
Profil || Suche |
|
015 16.11.2001, 17:32 Tron |
@draft: btw: der * gehoert (gemaes gutem programmierstil) zum datentyp und nicht zur variablen 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
016 16.11.2001, 19:00 Mazze |
Man kann es so oder so machen! BattleTech-MOD: |
|
Profil || Suche |
|
017 16.11.2001, 23:15 Hessie J. |
@Tron: Wahrscheinlich ist es ja auch gegen den guten Stil, zwei Pointer auf einmal zu definieren, aber da macht man es ja auch so: Dieser Beitrag wurde am 16.11.2001 um 23:17 von Hessie J. bearbeitet. |
|
Profil || Suche |

