Anzahl der Primzahlen,Zufallswerte

Hi

das Programm schaut an sich fehlerfrei aus, zumindest wird es auch nicht abstürzen.

Aber wozu ist die ganze Sache mit malloc und p gut?
a) Das passiert erst, nachdem die ganze Zufallsprimuntersuchung schon fertig ist.
b) Du legst ein Array an,
hast noch keine Werte drin -> es sind irgendwelche Zahlen drin,
und die untersuchst du jetzt auf die Primzahlenanzahl.
Und wenn du die Anzahl hast machst du nichts mehr damit und löscht das Array wieder.

Das, was bei dir p ist sollte wohl eher list sein,
und die ganze malloc-Sache gehört ins obere Programm reingemischt.
 
Hi

das Programm schaut an sich fehlerfrei aus, zumindest wird es auch nicht abstürzen.

Aber wozu ist die ganze Sache mit malloc und p gut?
a) Das passiert erst, nachdem die ganze Zufallsprimuntersuchung schon fertig ist.
b) Du legst ein Array an,
hast noch keine Werte drin -> es sind irgendwelche Zahlen drin,
und die untersuchst du jetzt auf die Primzahlenanzahl.
Und wenn du die Anzahl hast machst du nichts mehr damit und löscht das Array wieder.

Das, was bei dir p ist sollte wohl eher list sein,
und die ganze malloc-Sache gehört ins obere Programm reingemischt.

Erstmal danke für die Antwort. Die Aufgabenstellung lautet, "Die Liste soll auf dem Heap gespeichert werden". Was bei mir p ist, sollte list sein, Mit list habe ich versucht, und habe Fehlermeldung bekommen, da die
C++:
 int *list
schon deklariert war, lautete die Fehlermeldung "in Konflikt stehende Typen für list" . Dann hab ich
C++:
int *
entfernt, so sah es dann aus

C++:
list = (int*) malloc(sizeof(int) * laenge); //*****
if (!list) {
  printf("Allocation of %d bytes failed!", (sizeof(int) * laenge));
}
else {
  numPrimes(list, laenge);
  // Freigeben und sicherheitshalber auf 0 setzen
  free(list);
  list = 0;  //*******
}


so klappte es wieder nicht, Habe 2 mal die gleiche Fehlermeldung gehabt (siehe ****) > "unverträgliche Tyoen bei Zuweisung an typ >>int[ (unsigned) (laenge )]"<< von Typ >>int *<<
 
Nocheinmal: Wozu soll das am Ende des Programms überhaupt gut sein?
Die Reservierung, also malloc usw., gehört an den Anfang.

Ist list ein int* oder noch immer int [laenge]?
Und nach dem free besser NULL statt 0 nehmen.
 
und nach dem free besser NULL statt 0 nehmen.
Ich habe es jetzt oben angepasst, aber AFAIK ist es nur ein Unterschied beim Leser, siehe:
http://stackoverflow.com/a/1296865/603003
http://openbook.galileocomputing.de/c_von_a_bis_z/014_c_dyn_speicherverwaltung_003.htm

NULL ist 0 zu einem void-Zeiger konvertiert: NULL = (void*) 0
Und wenn man einen Zeiger mit 0 vergleicht, wird soweit ich das gerade gelesen hatte, dieser automatisch zu einem Zeiger gecastet, sprich (void *)0.
 
Jo, aber je nachdem, mit welchen Compilern man sich manchmal noch quälen kann
bekommt man eventuell jedesmal eine Warnung :(
Macht aber wirklich keinen Unterschied.
 
Zurück