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 cast

    bin 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 cast

    Ja, 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


Anmelden zum Antworten