Hi, und zwar wollte ich fragen, ob es irgendeine möglichkeit gibt, ein mehrdimensionales Array unter C mit einer "einstellbaren" Größe zu deklarieren? Z.b.: Gibt der benutzer 20x25 ein und damit wird für ein 20x25 großeses Array Speicher reserviert. Danke
Gast
#2255921
malloc()
malloc
Danke :)
oder malloc() :-) Aber man muß halt bei mehrdimensionalen Feldern die Indexberechnung selber machen, weil man C-seitig ein eindimensionales Feld hat. Alternativ könnte man natürlich C++ nehmen...
detailierung: Variante 1: mit malloc ein Pointer-Array mit der Größe der ersten Dimension erzeugen und dann in einer Schleife die Pointer mit malloc auf die größe der 2. Dimension Allozieren Variante 2: mit malloc ein eindimensionales Array der Größe MxN erzeugen und die Transformation der Indizes selbst übernehmen. i_ij = i*n + j Variante 3: mit malloc ein Pointer-Array mit der Größe der ersten Dimension erzeugen und mit malloc ein eindimensionales Array der Größe MxN erzeugen. anschließen das Pointerarray mit geeigneten Zeigern in das eindimensionale Array befüllen, indem die selbe Berechnungsvorschrift, wie auch in Variante 2 zum einsatz kommt
Klaus Wachtler schrieb: > oder malloc() :-) Warum kommt eigentlich niemand mit calloc()?
Gast
#2255947
realloc
Variante 4 (nur mit gcc oder C99): http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
edit: mit
1 | |
compilieren.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.