kann mir das jemand erklären?

  • Ersteller aussengelaender
  • Erstellt am
A

aussengelaender

Foren As
ich hab gerade angefangen in c bisschen mit pointern rumzuspielen. Wollte mit einem pointer den inhalt vom eine anderen beeinflussen! hab ich auch gemacht bloss meine ausgaben dazu sind einfach irgendwie komisch komisch!

Code:
#include <stdlib.h>
#include <stdio.h>

int main()
{
	int *ptr,zahl,*ptr2,zahl2;
	ptr = &zahl;
	*ptr = 5;
	ptr2 = &zahl2;
	*ptr2 = 666666;	
	printf("ptr = %d\n",*ptr);
	printf("adresse von ptr ist %p \n",&ptr);
	printf("ptr2=%d\n",*ptr2);	
	printf("adresse von ptr2 ist %p \n",&ptr2);	
	ptr2+=2;                          //hier erhoehe ich die adresse
	printf("adresse von ptr2_neu ist %p \n",&ptr2); 
	printf("ptr2_neu = %d \n",*ptr2);	
	*ptr2=9999999;	
	printf("ptr_neu = %d\n",*ptr);
	printf("adresse von ptr_neu ist %p \n",&ptr);	
	return 0;
}

+Ausgaben

Code:
bla@debian:/emulator/c$ gcc -o pointer1 pointer.c && ./pointer1 
ptr = 5
adresse von ptr ist 0xbfb76860 
ptr2=666666
adresse von ptr2 ist 0xbfb76858 
adresse von ptr2_neu ist 0xbfb76858     //adresse veraendert sich nicht laut ausgabe	
ptr2_neu = 5                                     //aber inhalt veraendert sich trotzdem
ptr_neu = 9999999
adresse von ptr_neu ist 0xbfb76860
 
Du gibt die Adresse von ptr2 aus, nicht aber die Adresse auf die ptr2 zeigt! :)
Du musst die & vor ptr2 in den printf - Anweisungen entfernen.
 
Ah danke, da war noch ein denkfehler in meiner Vorstellung von pointern, aber so macht das erstmal sinn!
 
Ein Pointer ist ja auch nur eine Variable die etwas speichert - nämlich Adressen. Und mit &ptr2 wird dir dann halt die Adresse ausgegeben, an der der Pointer liegt - wo dieser also die Adresse von zahl2 abgelegt hat - Quasi die Adresse der Adresse von zahl2 :)
 

Ähnliche Themen

Unix Webserver mit HTML Seite erstellen

Prozesskommunikation mit PIPES - wie funktioniert das?

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Fehlermeldung bei ganz simplen Code

Aufgabe in C

Zurück
Oben