Pointer als Funktionsparameter
-
Hallo,
ich habe einige vorgegebene Funktionen der Form
func(double * array, int * laenge) { //bearbeite array }
Bisher rufe ich die Funktion immer so auf:
double a[5] = {...}; int laenge = 5; func(a, &laenge);
Gibt es eine Möglichkeit, die Funktion aufzurufen, ohne extra eine Variable laenge definieren zu müssen? Ich würde gerne so etwas schreiben:
double a[5] = {...}; func(a, 5);
Dies funktioniert natürlich nicht (segfault).
Es ärgert mich, ständig lokale Variablen nur für den Funktionsaufruf definieren zu müssen.
Viele Grüße,
Bernhard
-
nö
-
^^entweder du änderst die funktion, oder bastelst eine dazwischen
int func2 (double * array, int laenge) { int l = laenge; func (array, &l); // original aufrufen return l; }
-
edit: oder gleich so...
int func2 (double * array, int laenge) { func (array, &laenge); // original aufrufen return laenge; }
-
Hab mir schon gedacht, dass es direkt nicht anders geht.
Da es mehrere Funktionen sind, ist das dazwischenbasteln ein bisschen umständlich.
Ich glaube, ich erstelle lieber ein paar globale Konstanten und nehm die zum übergeben. Da ich weniger unterschiedliche Übergabemöglichkeiten habe als Funktionen, geht das schneller
Vielen dank,
Bernhard
-
Das hier könnte eventuell gehen:
func(a, &(struct {int i;}){5}.i);
Edit: Oder so:
func(a, (int[]){5});
-
namespace invader schrieb:
Edit: Oder so:
func(a, (int[]){5});
^^sieht extrem nach c99-only aus. ich würd's besser in ein makro packen. so sieht's ja echt schlimm aus.