Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Dynamische Felder

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
25.04.2008, 22:12 Uhr
0xdeadbeef
Gott
(Operator)


Diese Zeile ist falsch:

C++:
  *irgendwas = malloc (1024);


...das ist hoffentlich offensichtlich.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
26.04.2008, 02:23 Uhr
Hans
Library Walker
(Operator)


ahh! - ich hab den Fehler gefunden!

Es muss natürlich:

C++:
   irgendwas = malloc (...);


heissen. - Also der Stern * hat bei der Zuweisung des Zeigers nix zu suchen...

Aber die Frage wegen dem (impliziten) Typecast ist damit immer noch nicht beantwortet. - Den überlässt man also besser dem Compiler, ja?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
26.04.2008, 09:27 Uhr
ao

(Operator)



Zitat von KFC Embryo:
Hi,
@ao: Wenn ich es so mache wie du sagst:

Code:

int *arr = malloc(n*sizeof(int));


bekomme ich folgenden Fehler:

Code:

error C2296: '*': Ungültig, da der linke Operand vom Typ 'int *' ist




Genau, und wenn du meinen letzten Satz liest, weißt du auch, warum: Du benutzt den C++-Compiler, also nimm new und nicht malloc.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
26.04.2008, 11:02 Uhr
KFC Embryo
Ein Huhn


Hi,

also irgendwie werde ich da nicht schlau drauß.
Selbst wenn ich die Allokierung mit "new" mache bekomme ich den schon geposteten Fehler.

Weiß niemand wo dran das liegen kann?

Ich bin im Moment ziemlich verwirrt weil sich das alles nicht so richtig mit dem was ich lass und was ich in den Vorlesungen höre deckt.

Wie würdet ihr denn das Programm von mir schreiben?

Sorry, will das jetzt wissen, dass läßt mir keine Ruhe^^.

Ich danke vielmals.

Gruß
--
An nescis, mi fili, quantilla prudentia mundus regatur?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
26.04.2008, 19:59 Uhr
Hans
Library Walker
(Operator)


Hi,
ich hab mir mal das Programm aus posting 005 vorgenommen, und folgendes entdeckt:


C++:

int* ReadNumbers(FILE *fin, int *n)
{
    int x,i;
    int *arr;

    x = fscanf(fin, "%d", &n);

    if(x == 0){
        printf("Beim lesen der Datei ist ein Fehler aufgetreten: \n");
    }else{
        arr = (int*) malloc((sizeof(int))*n;   /* 3 Klammern auf und nur 2 wieder zu,
                                                     Variablenverwechselung n und wahrscheinlich x
    }
    for(i=0; i<x; i++){
        fscanf(fin, "%d", &n);   <----------- Manipulieren von Adresse?
        arr[i] = (n+1)+i;
    }
    return arr;
}



Also Du übergibst der Funktion einen Zeigen Namens n, in der malloc-zeile benutzt Du einen integer n, das ist ein Typenkonflikt, ich nehme an da soll der Wert hin, den Du vorher mit fscanf gelesen hast, das wäre dann x.
Dann machst Du in der selben Zeile 3 Klammern auf, aber nur 2 wieder zu.

Soweit erst mal das, was mir da so auffiel.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: