Array Dynamisch
-
Hallo Habe folgendes "Newbie "Problem!
passing arg1 ..... makes integer from pointer without a cast.
auszug aus dem code:
main{
int dim_x = 4, dim_y = 4;
double **matrix1; //pointer auf pointer
double **matrix2;matrix1 = CreateMatrix(&dim_x, &dim_y);
}double *CreateMatrix(int dim_x,int dim_y)
{
int i;
double **z malloc(dim_x * sizeof(double));
for(i=0;i<dim_x;i++)
{
z[i] = malloc(dim_x * sizeof(double));
}
return z;
}Was bedeutet diese Fehlermeldung und wie kann ich sie in zukunft vermeiden
Danke
-
main{ int dim_x = 4, dim_y = 4; double **matrix1; //pointer auf pointer double **matrix2; matrix1 = CreateMatrix(dim_x, dim_y); } double **CreateMatrix(int dim_x,int dim_y) { int i; double **z; z = malloc(dim_x * sizeof(double*)); for(i=0;i<dim_x;i++) { z[i] = malloc(dim_x * sizeof(double)); } return z; }
Da waren ein paar & zu viel
und du hast die Zuweisung vergessen beim Aufruf von malloc().
-
für die schnelle Antwort!
was bedeutet diese Fehlermeldun. ich kann mir schon denken dass eine unzulässige typumwandlung stattfindent laut fehlermeldung, aber warum?
-
Da ich ein anfänger bin versuche ich das alles zu verstehen. wie kann ich das ganze jetzt füllen wenn ich dynamisch array erstelle z.b. 2 * 2 und jeden einzelnen wert händisch eingeben will
-
Die Fehlermeldung kommt deswegen weil du versucht hast eine Adresse zu übergeben obwohl keine Adresse sondern ein Wert erwartet wurde.
Zum Füllen:
Du machst eine geschachtelte Schleife und liest über z. B. scanf() deine Werte ein. Was ist das Problem?
-
Also, z beinhaltet die Anfangsadresse des allocierten Speichers des Arrays, die Funktion erwarten aber einen double Rückgabewert, Zunächst ist eine Adresse keine Fließkommazahl, ferner werden Fließkommazahlen auch anders im Speicher verwaltet, nähmlich mit Mantisse und Exponent. Eine Adresse hat im Regelfall eine Größe vom Typ int.