Zeiger und Referenzen

Diskutiere Zeiger und Referenzen im Developer Network Forum im Bereich Hardware & Software Forum; Hi, Ich habe ein Problem mit Den Zeigern in C++ mit referenzen komme ich so halbwegs klar und blicke auch so ungefähr durch wofür die gut sind...
  • Zeiger und Referenzen Beitrag #1
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Hi,

Ich habe ein Problem mit Den Zeigern in C++ mit referenzen komme ich so halbwegs klar und blicke auch so ungefähr durch wofür die gut sind aber mit zeigern habe ich voll probleme ich verstehe da garnichts.

Kann mir einer helfen?

Ps. Ich benutze dieses tut: http://tutorial.schornboeck.net/inhalt.htm

Mfg. matyr
 
  • Zeiger und Referenzen Beitrag #2
K

KillAV

Bekanntes Mitglied
Dabei seit
16.06.2007
Beiträge
49
Reaktionspunkte
0
Was verstehst du den nicht an Zeigern?
 
  • Zeiger und Referenzen Beitrag #3
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Im Prinzip sind Zeiger nicht großartig was anderes als Referenzen.
Ich persönlich würde aber vorschlagen, Zeiger erstmal beiseite zu lassen und dich mit anderen Themen der Programmierung zu beschäftigen. Wenn du tief genug in der Materie drin bist, wirst du von selbst irgendwann auf Probleme stoßen, die die Verwendung von Zeigern erfordern. Dann erschließt sich der Sinn von selbst.
 
  • Zeiger und Referenzen Beitrag #4
C

cc_ip

Bekanntes Mitglied
Dabei seit
08.03.2007
Beiträge
214
Reaktionspunkte
0
pointers are extraordinary attended to know and understand..
 
  • Zeiger und Referenzen Beitrag #5
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Aber wenn ich mit dem tut weiter mache da kommen extrem oft zeiger vor.

z.B. in classen anlegen ( wo auch noch nicht wirklich durchblicke^^)
 
  • Zeiger und Referenzen Beitrag #7
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
damit verstehe ich wie man die macht und was sie bringen aber wofür man sie braucht weiß ich noch nicht.

Aber trozdem schonmal ein vortschritt. :merci:

Mfg. Matyr
 
  • Zeiger und Referenzen Beitrag #8
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Ist eigentlich ganz einfach. Ein Zeiger ist nichts anderes als eine Variable, die eine Speicheradresse enthält. Wenn Du einen Zeiger per printf oder cout ausgibst, siehst Du die Adresse. Sinnvollerweise ist das eine Adresse eines Speicherbereiches, den Du vorher mit new oder malloc reserviert hast. Wenn Du den Zeiger auf 0 setzt, dann ist zwar der Speicherbereich noch reserviert, allerdings für Dich verloren, da Du die Adresse nicht mehr hast. Das ist dann der berühmte memory-leak ;-)

Wenn Du mit x = new Klassenname(); ein Objekt erzeugst, ist das erstmal nichts anderes als ein Speicherblock an irgendeiner Speicheradresse, der für Dich reserviert wird. Diese Startadresse dieses Blockes steht dann in x.

Was in diesem Speicherblock steht und/oder was man damit anfängt, ist dann das nächste Thema, mit dem Du Dich befassen solltest.
 
  • Zeiger und Referenzen Beitrag #9
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
Also kann man Zeiger nur dafür verwenden adressen oder den inhalt einer adresse wiederzugeben?

Ps. ich benutze meistens stack das reicht auch für mich erstmal.

Mfg.Matyr
 
  • Zeiger und Referenzen Beitrag #10
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Also kann man Zeiger nur dafür verwenden adressen oder den inhalt einer adresse wiederzugeben?
Nicht nur wiedergeben. Irgendetwas sinnvolles mußt Du mit dem Speicherbereich schon anfangen. Früher oder später wirst Du auf Probleme stoßen, die sich nur mit Zeigern lösen lassen. Dann wirst Du auch verstehen, wozu sie gut sind.
 
  • Zeiger und Referenzen Beitrag #11
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Nicht nur wiedergeben. Irgendetwas sinnvolles mußt Du mit dem Speicherbereich schon anfangen. Früher oder später wirst Du auf Probleme stoßen, die sich nur mit Zeigern lösen lassen. Dann wirst Du auch verstehen, wozu sie gut sind.

Diese Probleme tretten auf wenn man was machen möchte ?
 
  • Zeiger und Referenzen Beitrag #12
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Ein paar Parameter an eine Funktion übergeben und die ändern...?
 
  • Zeiger und Referenzen Beitrag #13
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

Diese Probleme tretten auf wenn man was machen möchte ?
Wenn man in C oder C++ Programmieren möchte.

Zeiger und Referenzen sind integraler Bestandteil dieser Sprachen. Schon bei einem simplen printf("hello world\n") werden bereits Zeiger verwendet. D.h. ohne zu wissen, was ein Zeiger oder eine Referenz ist, kommt man in diesen Sprachen nicht weit.

Nic
 
  • Zeiger und Referenzen Beitrag #14
C

cc_ip

Bekanntes Mitglied
Dabei seit
08.03.2007
Beiträge
214
Reaktionspunkte
0
compiliere:
Code:
#include <stdio.h>
#include <conio.h>

void tausch(int a, int b)
   	{
      int t;
      t=a;
      a=b;
      b=t;
      }
void main()
	{
	int x = 5;
   int y = 10;
   printf("Vorher: %d %d\n", x, y);
   tausch(&x,&y);
   printf("Nachher: %d %d", x, y);
   getch();
   }

und comiliere mal:
Code:
#include <stdio.h>
#include <conio.h>

void tausch(int *a, int *b)
   	{
      int t;
      t=*a;
      *a=*b;
      *b=t;
      }
void main()
	{
	int x = 5;
   int y = 10;
   printf("Vorher: %d %d\n", x, y);
   tausch(&x,&y);
   printf("Nachher: %d %d", x, y);
   getch();
   }
 
  • Zeiger und Referenzen Beitrag #15
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
  • Zeiger und Referenzen Beitrag #16
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Ich bezweifle, dass ersteres wie gewünscht funktioniert, und mein Compiler bezweifelt das ebenfalls. Auch wenns nur eine Warning gibt. ;)
 
  • Zeiger und Referenzen Beitrag #17
C

cc_ip

Bekanntes Mitglied
Dabei seit
08.03.2007
Beiträge
214
Reaktionspunkte
0
Hallo,



"main" liefert in einem hosted environment immer ein int zurück, daher muss "int main()" verwendet werden!

Nic

der faulheit halber hab ich mir die eine zeile code gespart, würde hier ja auch keinen dringlichen zweck erweisen... (aber im großen und ganzen hast du recht) wobei das C99 final draft "void main()" nicht direkt verbietet, jedoch mögen es nicht alle compiler..

und zu cmddegi:
jop da hast du wohl recht, darum habe ich auch 2 codes gepostet, damit man sieht wann man z.b. pointer verwenden muss...
 
  • Zeiger und Referenzen Beitrag #18
Matyr

Matyr

Bekanntes Mitglied
Dabei seit
09.03.2007
Beiträge
428
Reaktionspunkte
0
man kan aber meines wissens auch referenzen dafür benutzen.
 
  • Zeiger und Referenzen Beitrag #19
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Im ersten Code rufst du deine Add-Funktion, die ints erwartet, mit den Adressen der Ints auf. Ich vermute mal, das sollte das klassische Beispiel dafür sein, dass die Variablen bei Übergabe als Wert nicht vertauscht werden, und nicht ein Beispiel dafür, dass ein prinzipiell fehlerhaftes Programm selten funktioniert. Typischer Copy-Paste-Fehler vermut ich mal ;)
 
Thema:

Zeiger und Referenzen

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben