Const im Funktionsaufruf
-
Guten Tag
Ich habe einige Fragen zu folgendem Funktionskopf:
void mat_init (MATRIX *mat, int mode, const double *vals)
Diese Funktion soll eine Matrix mit Werten, die in vals übergeben werden, füllen.
der wohl interessante Teil innerhalb der Funktion lautet:
case MAT_FULL: /* set full matrix to given values */ for (row = 0; row < mat->rowcnt; row++) { d = mat->els[row]; /* traverse the matrix rows */ n = mat->colcnt; col = -1; if (vals) { while (++col < n) *d++ = *vals++; } else { while (++col < n) *d++ = t; } } break; /* copy the given values */ case MAT_UPPER: /* set upper triangular matrix */
Was genau bedeutet das Const bei der Parameterliste? Heißt es, dass ich der Funktion nur eine Constante übergeben darf? Dann hätte ich doch immer nur einen einzigen Wert oder? Wie bekomm ich es hin, dass verschiedene Werte in die Matrix geschrieben werden? Kann ich der Funktion auch irgendwie ein Array übergeben?
Vielen Dank für Eure Mühe und Hilfe
-
Hallo,
svensen schrieb:
Was genau bedeutet das Const bei der Parameterliste? Heißt es, dass ich der Funktion nur eine Constante übergeben darf?
Nein, es ist nur eine Zusicherung an den Aufrufer der Funktion, dass sie die übergebenen double-Werte nicht ändern wird, die bleiben also konstant.
svensen schrieb:
Kann ich der Funktion auch irgendwie ein Array übergeben?
Aber ja, deswegen wurde die Funktion wahrscheinlich auch so geschrieben, dass sie einen double-Zeiger erwartet, warum versuchst du es nicht einfach?
MfG,
Probe-Nutzer