Forum: PC-Programmierung Zeigerarray an Unterfunktion übergeben (C)


von Tobias (Gast)


Lesenswert?

Hallo,

ich möchte in C ein Programm schreiben, in dem ich ein Array von Zeigern 
in der Hauptfunktion definiere und die Werte, auf die die Zeiger zeigen, 
in einer Unterfunktion ausgebe.

Bisher gibt er die Werte aber noch nicht aus. Kann mir jemand sagen, was 
ich falsch mache?
1
#include <stdio.h>
2
#include <stdlib.h>
3
4
FILE *pFile;
5
6
int main(int argc, char *argv[])
7
{
8
   double *Test_Array;
9
   double debug_variable;
10
   int x=45;
11
   int n;
12
13
   Test_Array = (double *)malloc((10 +1) * sizeof(double));
14
   for (n=0;n<10;n++)
15
   {
16
       x = x+1;
17
       Test_Array[n] = x;
18
       debug_variable = Test_Array[n];
19
   }
20
   _ausgeben (Test_Array);
21
   return 0;
22
}
23
24
25
_ausgeben (double *Array[])
26
{
27
   int n;
28
29
   pFile = fopen ("Test_Ausgabe.txt","w");
30
   for (n=0; n<=10; n++)
31
   {
32
       fprintf (pFile,"Zahl %d: %d\n", n, Array[n]);
33
       printf ("Zahl %d: %d\n", n, Array[n]);
34
   }
35
   fprintf (pFile, "\n");
36
   fclose (pFile);
37
}

von Klaus W. (mfgkw)


Lesenswert?

Tobias schrieb:
> ich möchte...

Soll heißen: du musst als Hausaufgabe...?

---

Diese beiden passen nicht zusammen:

Tobias schrieb:
> in dem ich ein Array von Zeigern

Tobias schrieb:
> double *Test_Array;

So definierst du kein Array von Zeigern, sondern ein Array
von double-Werten.

Tobias schrieb:
> Test_Array = (double *)malloc((10 +1) * sizeof(double));

Das sieht auch nach einem Array von doubles aus.
Bei einem Array von Zeigern auf double müsste es heißen:
Test_Array = (double **)malloc((10 +1) * sizeof(double*));

Wieso eigentlich 10+1?
Du verwendest doch nur 10 Elemente, oder?

Zumindest hier:
Tobias schrieb:
> for (n=0;n<10;n++)

Hier dagegen 11:
Tobias schrieb:
> for (n=0; n<=10; n++)

Außerdem ist deine Funktion bei ihrem Aufruf nicht deklariert.
Das sollte zumindest eine Warnung geben.
Offenbar ignorierst du Warnungen, das ist grundsätzlich falsch.
Noch falscher ist es, uns diese Warnungen vorzuenthalten.
Dadurch muß hier jeder selber rätseln, was alles falsch ist;
das macht nur unnötig Arbeit.

Ein eigener Name (hier für die Funktion) mit einem _ am Anfang
ist auch immer eine schlechte Idee. Laß das einfach bleiben,
es hat keinen Sinn.

Eine klare Beschreibung, was dein Programm machen soll, würde
allen - auch dir selbst vor allem - sehr helfen.

Tobias schrieb:
> fprintf (pFile,"Zahl %d: %d\n", n, Array[n]);

Eine double wird nicht mit %d ausgegeben, sondern mit %f oder %e
oder %g.

Tobias schrieb:
> Bisher gibt er die Werte aber noch nicht aus.

Das heißt genau was?
Er gibt gar nichts aus? Oder etwas Falsches? Und was?
Soll man das raten, oder kannst du dich klarer ausdrücken?

Tobias schrieb:
> Kann mir jemand sagen, was
> ich falsch mache?

Vieles, siehe oben.
Und vor allem: das alles steht in jedem C-Buch.
So etwas kann man lesen.

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.