C++ Sternchen beim Funktionsnamen

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Guten Morgen,

Ich bin grade auf einen Codeschnipse gestossen den ich nicht verstehe.

Code:
SDL_Surface *load_image( std::string filename )
           { //Temporary storage for the image that's loaded 
              SDL_Surface* loadedImage = NULL;    
             //The optimized image that will be used 
            SDL_Surface* optimizedImage = NULL; 
            // .....

Was mir Kopfzerbrechen macht ist das *load_image, da ich nicht verstehe, welche Bedeutung das Sternchen hat. Ich kenne, das Sternchen nur von Pointern, habe es aber bisher in Verbindung mit Funktionen noch nicht gesehen.
 
Das Sternchen signalisiert nur das die Funktion einen Pointer auf eine SDL_Surface Instanz zurückgibt. Denkbar sind folgende Schreibweisen, die alle das gleiche machen:

SDL_Surface *load_image( std::string filename )

SDL_Surface* load_image( std::string filename )

SDL_Surface * load_image( std::string filename )
 
Zuletzt bearbeitet:
Also das Sternchen gehört zum Rückgabewert und der Rückgabetyp ist die Addresse auf eine Instanz (in diesen Fall dey Types SDL_Surface). Ist das so richtig?
 
So würde ich das sehen bzw. interpretieren, aber da kann sicher ein Profi mehr dazu sagen...

Wenn ich mich auf B. Stroustrup beziehe dann steht der Stern beim Typ: int* a;

Wenn ich mich auf U. Kaiser & C. Kecher beziehe dann steht der Stern beim Namen: int *a;

Wenn ich diverse ander Quellen anschaue gibts halt auch diese Variante: int * a;
 
Sagen wir's mal so...

C/C++ ist in dieser Hinsicht ein wenig dumm gemacht...

Klar, der Stern gehört eigentlich zum Datentyp, da die Variable a im obigen Beispiel ja vom Typ "Zeiger auf int"ist.

Interessanter wird es leider bei diesem Beispiel:
Code:
int* a, b;

Welchen Typ hat a, welchen hat b?

a: int*
b: int

Das ist das ärgerliche. Deshalb werden die Sterne eben oft zum Bezeichner geschrieben, weil hier ist es leichter zu sehen:

Code:
int *a, b;

Wie gesagt, ich mag C/C++ leider nicht so (in dieser Angelegenheit).

Man kann übrigens vor und nach dem Stern beliebig viele Leerzeichen machen...

Also die folgenden Zeilen bedeuten alle das selbe:
Code:
int* a;
int *a;
int * a;
Edit: Ob int*a auch geht => keine Ahnung... eventuell muss mindestens ein Leerzeichen da sein...
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben