Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » was bedeutet z.B. int* variable

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 ] > 2 <
010
05.01.2005, 19:10 Uhr
Hans
Library Walker
(Operator)


Hi,

wenn ich auch noch mal kurz einen "Erfahrungsbericht" dazu abgeben darf...
Ich ziehe es vor, wenn der "*" bei der Deklaration an der Varible "dran klebt", die den Zeiger bezeichnet, also das hier:

C++:
int *x;

Unter anderem, weil ich auch gerne die Kurzschreibweise benutze. Also:

C++:
int *x, *y, *z;

oder

C++:
int *x, // bla
    *y, /* bla blaa, bei Bedarf auch mehrzeilig */
    *z; // blub


Man könnte das zwar auch so machen:

C++:
int *x; // bla
int *y; /* bla blaa, auch mehrzeilig */
int *z; // blub


"Aber warum sollte man mehr schreiben, als notwendig. Wir sind schliesslich Ingenieure, und keine Sekretärinnen!" So in etwa der Kommentar des DV-Profs in der FH dazu.

Und, was vielleicht auch noch den einen oder anderen interessiert: Als ich diese Form:

C++:
int* x;

zum ersten mal gesehen hab, hab ich überhaupt nicht begriffen, was das sein sollte. Denn schliesslich ist ja "x" der Zeiger, aber nicht "int". Aber warum soll der Datentyp, bzw. die Typenbezeichnung schon der Zeiger sein??? - So in etwa meine Fragen. - Das ist wohl das Problem mit der Syntax und der Semantik, das Virtual oben erklärt hat.

Abschliessend noch, weil Tommix da so ein schönes Beispiel gebracht hat:

Zitat von Tommix:

Dagegen spricht z.B.:

C++:
int* a, b, c;

weil hier b und c keine Pointer sind, obwohl die Schreibweise das suggeriert.

Ein weiterer Grund, warum ich die andere Schreibweise vorziehe.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 05.01.2005 um 19:19 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.01.2005, 07:36 Uhr
Tommix



Hallo,

Zitat von Hans:

Denn schliesslich ist ja "x" der Zeiger, aber nicht "int".


Mag sein, aber: *x ist nun gerade kein Zeiger, sondern halt nur x. Ich hatte am Anfang immer so meine Mühe, mir zu merken wann denn nun das * dastehen muß und wann nicht oder womöglich doch ein &. Gelegentlich wird auch vorgeschlagen

C++:
int * a;


zu schreiben. Wenn man ganz penibel ist, geht auch

C++:
typedef int* int_ptr;

int a, b, c;
int_ptr d, e, f;

d = &a
e = &b;
c = &c;


Alles in allem hat Virtual (wie meistens) schon recht:

Zitat von Virtual:

Von einem C Programmierer kann man erwarten, daß er beide Alternativen akzeptiert und soweit flexibel ist, sich an die jeweils vorherrschenden Kodierungsrichtlinien hält - die müssen nicht immer der eigenen Logik folgen.



Gruß, Tommix

Dieser Post wurde am 06.01.2005 um 07:37 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
06.01.2005, 09:38 Uhr
(un)wissender
Niveauwart


@Tommix

Das hier tut nicht, was du willst

C++:
typedef int* int_ptr;

int a, b, c;
int_ptr d, e, f;

d = &a
e = &b;
c = &c;



d ist ein int*, e und f nur ein int.
Korrekt wäre


C++:
int* d, * e, * f;


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
06.01.2005, 09:46 Uhr
virtual
Sexiest Bit alive
(Operator)


@(un)wissender
Meiner Meinung sind e und f int_ptr und damit int*. Warum meinst Du, e und f seien nur ints?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
06.01.2005, 11:30 Uhr
stephanw
localhorst


Ich schreibe das ebenso wie virtual und teile auch die Argumentation. Nur die Kurzschreibweisen sind - wie Hans gesagt hat - dabei störend.

Allerdings verwende ich Kurzschreibweisen nicht gern, sie tendieren dazu, den Code unleserlicher zu machen. 1 h Debug-Arbeit über unleserlichem Code steht für mich in keinem Verhältnis zu 5 s Schreibarbeit. Das gleiche gilt für Klammern und Operator-Prioritäten, ich habe eine Stärke dafür, mir diese nicht zu merken. Daher klammere ich lieber. Aber ich schweife ab
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
06.01.2005, 17:20 Uhr
(un)wissender
Niveauwart


Ah, sorry, ja!

Tommix hat in seinem Beispiel c statt f geschrieben.
Dann geht das hier auch, Irrtum meinerseits.


C++:
typedef int* int_ptr;

int a, b, c;
int_ptr d, e, f;

d = &a;
e = &b;
f = &c;


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


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: