Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Variablen mit Zeigern tauschen

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 <
000
21.10.2005, 11:46 Uhr
~St Lucifer
Gast


hi, also ich bekomms irgendwie nicht so ganz gebacken den Inhalt 2 Variablen über Zeiger zu vertauschen. In dem Prog ist nichtmehr viel von meiner ursprünglichen Idee da, weil ich viel rumprobiert habe, aber was ich einfach mal als erstes wissen möchte warum die Zeiger nicht die Adressen der Variablen aufnehmen obwohl ich sagte pa=&a; und so.


C++:
#include <stdio.h>
#include <conio.h>

void main (void)
{
int a=0, b=1, hilf=0, *ph, *pa, *pb;           //Deklaration

printf("a: %d\t\t b: %d\n",a,b);                 //Ausgabe Inhalt a, b
printf("a: %x\t b: %x\n\n\n",&a,&b);           //Ausgabe Adressen a,b

pa=&a;
pb=&b;                                         //Zeiger Adressen zuweißen
ph=&hilf;

printf("pa: %d\t pb: %d\t\t ph: %d\n", pa,pb,ph);   //Ausgabe Inhalt Zeiger
printf("pa: %x\t pb: %x\n\n\n", &pa,&pb);            //Ausgabe Adressen Zeiger

ph=(int *)b; pb=(int *)a; pa=(int *)hilf;             //Variablen mit Zeigern tauschen

printf("\npa: %d\t\t pb: %d\t\t ph: %d\n", pa,pb,ph);  //Ausgabe Inhalt Zeiger
printf("a: %d\t\t b: %d",a,b);                         //Ausgabe Inhalt a, b

getch();
}





thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.10.2005, 12:55 Uhr
Pler
Einer von Vielen
(Operator)



C++:
*ph=(int *)b; *pb=(int *)a; *pa=(int *)hilf;             //Variablen mit Zeigern tauschen


so sollte es gehn.


C++:
printf("pa: %x\t pb: %x\n\n\n", &pa,&pb);  


Macht meiner meinung keinen sinn. Das sind ja Zeiger-Zeiger, das willst du hier bestimmt nicht, also müsst man das & weglassen.


C++:
printf("pa: %x\t pb: %x\n\n\n", pa,pb);  

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.10.2005, 13:32 Uhr
Pler
Einer von Vielen
(Operator)


die erste Zeile müsste eigentlich heissen:

C++:
*ph=b; *pb=a; *pa=hilf;             //Variablen mit Zeigern tauschen



Aber wie willst du eigentlich tauschen?


C++:
ph=(int *)b;


geht jedenfalls nicht. Du castst hier einfach eine int-Variable zu einem Zeiger.
Wenn dann musst es schon so machen wie bei der ersten zuweisung bei dir.

C++:
pb=&a;
pa=&b;                                         //Zeiger Adressen zuweißen
ph=&hilf;



Meiner Meinung nach macht das ganze keinen Sinn. Die Variablen über Zeiger zu tauschen funktioniert nicht. (Also die Zeiger an sich zu tauschen )
Wenn du einfach blos tauschen willst, kannst du ja

C++:
hilf = a;
a = b;
b = hilf;


machen.
Der Zwischenschritt über die Zeiger ist meiner Meinung nach sinnlos.
Oder wozu soll das gut sein?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.10.2005, 10:19 Uhr
~St Lucifer
Gast


Zur übung

hat echt keinen Sinn, aber es muss gelernt werden.
und ich habs jetzt auch gebacken bekommen.

thx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.10.2005, 10:51 Uhr
ao

(Operator)



Zitat von ~St Lucifer:
hat echt keinen Sinn, aber es muss gelernt werden.

Die Aufgabe (Tauschen mit Hilfe von Zeigern) macht dann Sinn, wenn die Tauschroutine in eine Funktion gepackt wird und die zu tauschenden Werte über Zeiger übergeben werden (die angesagte Call-by-reference-Technik in C ohne ++).

Versuch das doch mal. An völlig sinnentleerten Aufgaben lernt man in der Regel nichts.

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: