zeiger?
-
ich komme hier einfach nicht weiter, ich bekomme die fehlermeldung:
was beuten die?f:\testat manuel\testat2\testat2\testat2.cpp(43) : error C2440: '=' : cannot convert from 'int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
f:\testat manuel\testat2\testat2\testat2.cpp(49) : error C2446: '<' : no conversion from 'int *' to 'int'
There is no context in which this conversion is possible
f:\testat manuel\testat2\testat2\testat2.cpp(49) : error C2040: '<' : 'int' differs in levels of indirection from 'int *'
f:\testat manuel\testat2\testat2\testat2.cpp(51) : error C2440: '=' : cannot convert from 'int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castbin für jeden tipp dankbar!
int _tmain(int argc, _TCHAR* argv[]) { int anzahl; printf("Anzahl N eingeben: "); scanf("%d",&anzahl); int *zufallszahl; //int feld angelegt zufallszahl = (int *) malloc((anzahl) * sizeof(int)); //int feld wird dynamisch mit anzahl von 'anzahl' angelegt int i; for(i=0; i<anzahl; i++) { zufallszahl[i]=rand(); } for(i=0; i<anzahl; i++) { printf("%d ",zufallszahl[i]); } int hallo; int **zeiger; //int feld angelegt //----->>Erste Fehlermeldung<<--------- zeiger = (int **) malloc((anzahl) * sizeof(int*)); //int feld wird dynamisch mit anzahl von 'anzahl' angelegt int j; zeiger[0]=zufallszahl[3]; for(i=0; i<anzahl;i++) { for(j=i;j<anzahl;j++) { if(zufallszahl[j]<zeiger[i]) { zeiger[i]=zufallszahl[j]; } } } printf("\n\n geordnet: "); for(i=0; i<anzahl; i++) { printf("%d ",zeiger[i]); } printf("\n\n"); system("pause"); return 0; }
-
Admiarlis schrieb:
int **zeiger; //int feld angelegt
ist da ein sternchen zuviel?
-
na, das soll zweisimensional sein, ein zeiger aufn zeiger. wenn ich ein stern nehme gehts, da haste recht
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Admiarlis schrieb:
na, das soll zweisimensional sein
int **feld = (int**) malloc(anzahlX * sizeof(int*)); int i=0; for(i=0; i<anzahlX; i++) { *feld[i] = (int*) malloc(anzahlY * sizeof(int)); }
-
Warum castet ihr denn malloc()?
-
#include <stdlib.h> int main() { int *feld = malloc(4711 * sizeof(int)); return 0; }
Mein MS VC++ meint dazu
...\code.cpp(7) : error C2440: 'initializing' : cannot convert from 'void *' to 'int '
Conversion from 'void' to pointer to non-'void' requires an explicit cast
-
DarthZiu schrieb:
#include <stdlib.h> int main() { int *feld = malloc(4711 * sizeof(int)); return 0; }
Mein MS VC++ meint dazu
...\code.cpp(7) : error C2440: 'initializing' : cannot convert from 'void *' to 'int '
Conversion from 'void' to pointer to non-'void' requires an explicit castJa, du kompilierst hier aber C Code mit nem C++ Compiler. Und C++ will den Cast sehen. C hingegen nicht. Stell den VC++ mal auf reines C um (frag mich nicht, wie's geht
) und dann fällt auch die Fehlermeldung weg.
MfG
GPC
-
GPC schrieb:
(frag mich nicht, wie's geht
)
Nichts leichter als das: Kopier alles in eine .c Datei
(Ok, geht auch in den Optionen)
-
Das C keinen Cast braucht, hat übrigens den Vorteil, nicht jedesmal den Cast ändern zu müssen, wenn sich der Datentyp ändert. Und in C++ sollte man eh immer new und Konsorten verwenden.
MfG
GPC