Arbeiten mit Zeigern



  • Moin.

    Mir wurde vor ein paar Tagen die Aufgabe gestellt, ein kleines Programm zu schreiben, das ab einer bestimmten Speicheradresse den reservierten Speicher überschreibt. Die Aufgabe lautete wie folgt:

    Alloziieren sie Speicher mit
    int a;
    a = (int
    ) malloc (100);
    Beschreiben sie den gesamten alloziierten Speicher mit dem Wert 23 und geben sie Start- und Endadresse beim Füllen des Speicherbereichs, sowie den Inhalt der ersten beiden Integer aus.

    Soweit zur Aufgabe. Mein Problem ist nun nicht die Theorie, wie es funktioniert, sondern die praktische realisierung dieser Aufgabe.
    Mein Gedankengang war, einen Pointer auf die Startadresse zu kreieren und von da ab dann in einer for-Schleife den Inhalt der Adresse mit dem Wert 23 zu beschreiben und dann den Pointer incrementieren. Da jede Adresse aber nur auf ein Byte zeigt, muss ich ja einen Zeiger auf character basteln.
    Wie gesagt, das Problem ist nicht die Theorie, sondern die praktische Umsetzung des ganzen. Hoffe ihr könnt mir bei diesem Problem weiterhelfen, zumal ich mit Zeigern irgendwie nicht umgehen kann.



  • Wo ist das Problem? Wenn du einen Pointer auf ein int inkrekentierst zeigt er auf den nächsten int-Wert. Er wird also um sizeof(int) Bytes erhöht.

    Gruß



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main(char *argv[], int args)
    {
    
    	int *a= (int*) malloc( sizeof(int) * 100 );
    	int i;
    
    	printf("Startadresse: 0x%x, Endadresse: 0x%x\n", a, a+100);
    
    	for (i=0; i<100; i++)
    		a[i]=23;
    
    	printf("Erstes Element: %d, Zweites Element: %d\n", a[0], a[1]);
    
            free(a);
    
    	return 0;
    
    }
    

    und schnapp dir ein Tut über Zeiger!



  • 23 als int oder char?



  • @curry-king
    Danke. Das war genau das, was ich wissen wollte.
    Deinem Ratschlag werd ich folge leisten, zumal mir nicht bewusst war, das man den Zeiger so mit einem Array in Verbindung bringen kann.

    Merci beaucoup wie der Franzose sagt (oder auch schreibt).


Anmelden zum Antworten