In den structs ist doch immer ein Pointer auf ein dazugehöriges Array. Theoretisch reicht auch die extern Variante des Arrays, aber im Struct kannst du noch Zusatzinfos ablegen. Structs sind sozusagen die Urformen von Klassen, falls dir das als Verständnisversuch weiterhilft.
get_arr_value ist ja auch nur ein Beispiel für so eine kapselnde Funktion, in der du bereits Bereichsüberprüfungen usw vornehmen kannst.
Man könnte auch einfach eine char* get_array(int arr); Funktion dazu verwenden, um den Pointer auf das Array zu bekommen. Das ist dann ähnlich wie wenn du die Variante von Martin. nimmst, nur mit der erweiterten Möglichkeit von Überprüfungen usw. Auf das Array kannst du dann über den Pointer direkt zugreifen.
Wenn du wie oben beschrieben auf bestimmte Positionen im array zugreifen willst und das dann auch noch mit 2 Arrays, dann musst du zu den Arrays auch immer die Positionen und/oder extra Berechnungsparameter an deine Berechnungsfunktion übergeben. Wenn du nicht nur im Array etwas verändern willst, dann sollte vielleicht deine Funktion kein void als Rückgabewert liefern, sondern das Ergebnis der Berechnung.
Code:
int Berechnung1(int arr1, int pos1, int arr2, int pos2, int faktor, int subtrahend, char wasweissich)
{
switch(wasweissich){
case 'x':
return = get_array_value(arr1, pos1) - subtrahend;
break;
case 'a':
return = get_array_value(arr2, pos2) * faktor;
break;
case 'b':
set_array_value(arr1, pos1, (get_array_value(arr2, pos2) * faktor));
return = get_array_value(arr1, pos1);
break;
...
default:
break;
}
return 0;
}
int a = Berechnung1(1,0,2,25,1,0,'x');
Die Datentypen sind jetzt nicht mehr richtig stimmig, aber das musst du sowieso an deine Aufgabe anpassen.
sast
Lesezeichen