Forum: PC-Programmierung C: Variabler Datentyp als Funktionsparameter


von hans (Gast)


Lesenswert?

Hi Leute
ich möchte mir ne Funktion schreiben, die Arrays beliebiger Dimension 
von beliebigem Datentyp mit Hilfe von rand() beschreibt. Brauche diese 
Funktion oft, und dachte ich schreib sie jetzt einmal, für immer.

Ich find allerdings nicht mehr, wie mann den Funktionsheader deklariert.
Kann mir da mal einer helfen?

danke

von Peter (Gast)


Lesenswert?

das wird wohl schwer werden, woher soll denn die funktion wissen wie der 
Datentyp ist den er beschreiben soll? Eventuell geht sotewas mit 
Templates aber als normale funktion geht das nicht.

von hans (Gast)


Lesenswert?

ich hab da was im Hinterkopf von sog. "geschlechtslosen" Zeigern...
wie das war weis ich aber nicht mehr...

von Peter (Gast)


Lesenswert?

klar kannst du einfach void* übergeben, aber was hilft dir das? du 
willst es ja beschreiben und da ist es nun mal ein unterschied ob es ein 
char oder ein long ist.

von hans (Gast)


Lesenswert?

und wie ist das mit arrays beliebiger dimension? wie schaut da der 
prototyp aus? oder geht das auch nicht?

von Peter (Gast)


Lesenswert?

doch das geht, du musst die größe aber auch mitgeben

void fill(int*, size_t size );

von hans (Gast)


Lesenswert?

würde das funktionieren:

void random_array(void *array_start, int array_length int 
*array_dimension, int datatype, int mode)

array_start: anfangsaddresse des arrays
array_length: länge des allozierten dahinter allozierten Blockes
array_dimension:
z.b
array_dimension[5] = {{5},{2},{1}, {0}} bedeuted das array soll wie 
folgt ausgelegt werden: array[5][2][1]
datatype: 1 = int, 2 = long, 3=char,...
mode: für aufwärts, abwärts,...

sieht jemand darin etwas ungünsitges?

von Mark B. (markbrandis)


Lesenswert?

Wenn es eh mit rand() zufällig beschrieben werden soll, dann ist das 
Layout (und auch die Richtung) doch eigentlich egal, will sagen: Ob es 
ein array[9] ist oder ein array[3][3], sollte dann keinen Unterschied 
mehr machen solange der Datentyp der gleiche ist.

von hans (Gast)


Lesenswert?

stimmt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.