Zeiger

Was ist der Unterschied zwischen:
Code:
int* ptr=0;
int *ptr=0;
int * ptr=0;
Weil ein Buch sagt, dass alle drei das selbe seien, wärend das andere sagt, dass es verschiedene sorten von zeigern wäre.
 
@foobar

So viel ich weiß gibt es nur eine Art von Zeigern.
Die zweite Variante ist sicher richtig, die erste
falsch und bei der dritten weiß ich nicht.

MfG

Blackvirus
 
ihr versteht mich nicht, aber ich kann mich auch nicht richtig ausdrücken. zuallerst sollten alle gehen. denn den syntax von "int* ptr;" hab ich in "visual c++ 6 schritt für schritt" gesehen, läuft aber nicht wenn mans unter devc++ kompiliert.
das es nur eine art von zeigern gibt weiss ich auch, aber ich wusste es nicht anders auszudrücken.
trotzdem danke für eure mühe/aufmerkamkeit

weil ich nicht richtig ausdrücken kann was ich eigentlich meine, soll ein op bitte diesen thread closen.
 
Hab mal schnell n kleines, kommentiertes Programm geschrieben.
Man beachte übrigens, es wurde mit VC++ 6 kompiliert. Dieser Compilier ist
sehr tolerant, es kann sein, dass andere was Zeiger-Notation angeht weniger
tolerieren...

Code:
// Eine Kurze Zeiger-Notations-Demonstration

#include <iostream.h>

void main()
{
	// erstmal 2 Variablen füllen	
	int count1 = 5, count2 = 4;

	// Fall 1: Der Asterisk hängt am Typ
	int* pCount1 = &count1;

	// Fall 2: Der Asterisk hängt am Namen. Hier sehen wir auch schon, 
	// warum eine solche Notation durchaus sinnvoll ist: Wir können
	// direkt erkennen, welche Variable ein Zeiger ist und welche nicht, 
        // ich halte diese Notation für die leserlichste.
	int count3 = *pCount1,
		*pCount2 = pCount1;

	// Fall 3: Der Asterisk fungiert als Trennzeichen. 
	// Ebenso würde 'int * pCount3' funktionieren
	// Leerzeichen werden nicht berücksichtigt.
	// Genau genommen ist dies die effizienteste Notation, aber
	// leider auch die unleserlichste.
	int*pCount3 = &count2;

	cout << "count1: " << count1;
	cout << "\ncount2: " << count2;
	cout << "\ncount3: " << count3;
	cout << "\npCount1 zeigt auf: " << *pCount1;
	cout << "\npCount2 zeigt auf: " << *pCount2;
	cout << "\npCount1 zeigt auf: " << *pCount3;
}


/* Programm-Output:

C:\>ptrtest
count1: 5
count2: 4
count3: 5
pCount1 zeigt auf: 5
pCount2 zeigt auf: 5
pCount1 zeigt auf: 4

*/
 
Alle 3 Arten sind gleichwertig.
Es ist lediglich eine Frage des Geschmacks welche Syntax man benutzt.
Dem Compiler ist es sch**** egal.
 
Zurück
Oben