Dynamisches zweidimensionales Array

Genius

Mitglied
Hallo
ich sitze gerade vor einem eigentlich recht simplen Problem - hoffe ich zumindest ;-)!

Ich möchte in einer for Schleife mehrere Integer-Arrays allokieren.
Ich weiß, dass der Code so wie er nun folgt absoluter Müll ist, aber damit ihr nachvollziehen könnt was ich meine:
Code:
int i;
for(i = 1; i <= 10; i++) {
	int i[10];
}

Was ich am Ende möchte sind (bezogen auf diesen Code) 10 Arrays mit 10 Einträgen die "1", "2", "3", "4" ... usw. heißen.

Es handelt sich um eine Vielzahl und eine Variable Anzahl von Arrays - deswegen möchte ich sie in der for Schleife generieren.

Schon mal Danke im Voraus!
Mit freundlichen Grüßen
Genius
 
Hi

was hat das mit Sockets zu tun?
Hab einen neuen Thread daraus gemacht.

Zum Problem: Also ein Array aus Arrays

Was davon trifft zu:
a) Jedes der Arrays hat gleich viel Elemente und die Anzahl ist immer gleich.
zB. ein int[10], noch ein int[10] usw...

b) Wie a, die 10 kann aber beim nächsten Programmdurchlauf anderes sein.
16-16-16...

c) Jedes der Arrays hat unterschiedlich viel Elemente.
12-47-9...
 
Moin,

hmm, bin mir auch nicht sicher, ob ich die Frage wirklich verstanden habe ....

Du möchtest zehn verschiedene integer-Arrays mit jeweils Länge 10 haben?
Also sowas wie :
int 1[10];
int 2[10];
int 3[10];
..... :confused:

Möchtest Du durch die Schleife erreichen, dass die Variablenbezeichner der Arrays dynamisch sind?

Das würde so mit Deinem Code natürlich nicht gehen, da Du ja versucht 10x ein Array mit VARIABLEM Namen zu erzeugen!
Hallo
Code:
int i;
for(i = 1; i <= 10; i++) {
	int i[10];
}

Da geht so nicht, da die Bezeichner zur Compilezeit bekannt sein müssen !

Du könnest höchstens - wie von Sheel vorgeschlagen - ein Array der Länge 10 bestehend aus weiteren Integer-Arrays deklarieren !

Gruß
Klaus
 
Zuletzt bearbeitet:
Ich muss am Anfang meines Programms eine Vielzahl von gleichgroßen int-Arrays erstellen.

Du möchtest zehn verschiedene integer-Arrays mit jeweils Länge 10 haben?
Also sowas wie :
int 1[10];
int 2[10];
int 3[10];
Genau =)!

Da ich etwas über 100 Arrays brauche und ich zu "faul" bin diese am Anfang von Hand zu definieren wollte ich das eine for-Schleife erledigen lassen.
Außerdem möchte ich schnell und unkompliziert die Anzahl der Arrays verändern können.

Ein zweidimensionaler Array kommt (zumindest wie ich das verstanden habe) leider nicht in Frage, da es entscheidend ist, dass ich viele einzelne Speicherbereiche habe.
Es sollen nämlich eine Vielzahl von Prozessen darauf zugreifen - das geht nur über ein mutex lock - wäre es ein einzelner zweidimensionaler Array blockieren sich die Prozesse aufs ärgste - deswegen brauche ich viele einzelne separate Arrays.

Höchstens es reicht wenn ich über die mutex einzelne Spalten des mehrdimensionalen Arrays "blockiere" - und es dann ungefährlich ist wenn mehrere Prozesse darauf zugreifen - so lange immer nur einer auf eine Spalte zugreift?!

Allgemein gilt:
- es sollen x Arrays erzeugt werden
- jeder der x Arrays hat die selbe Anzahl an Elementen
- die Benennung der Arrays sollte linear sein also z.B. name_1[10]; name_2[10]; name_3[10]; ... usw., damit ich später unkompliziert darauf zugreifen kann.

Ich weiß warum ich früher nur php programmiert habe ^^ - da wäre das ganz simpel :-p!

Vielen Dank
Mit freundlichen Grüßen
Genius
 
Hi

das mit den Namen geht nicht so wirklich,
da Variablennamen im kompilierten Programm nicht existieren.

Wenn du die Arrayanzahl verändern möchtest: Liste etc... aus Arrays.
Jeder Zugreifer hat seinen eigenen Iterator
und jede Spalte hat einen Mutex (struct aus Array und Mutex)

Kannst du mir auch die erste Frage von oben noch beantworten?

Und mit PHP wäre das meiner Meinung nach nicht simpel, sondern komplett unmöglich.

@Saftmeister: Darum gehts doch die ganze Zeit.
 
@sheel: Falsch! Mit PHP ist es eines der leichtesten Dinge Variablen mit variablen Namen zu erstellen:
PHP:
for($i = 0; $i < 10; ++$i) {
  $var_name = 'name_' . $i;
  ${$var_name} = 0;
}
 
@sheel: Du kannst in PHP (mit entsprechender Erweiterung) neue Kindprozesse erstellen, die du dann von einem Hauptprozess aus regelmäßig kontrollierst. Aber ansonsten ist es wirklich unmöglich.
 
Zurück