Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Unterschied: int* bla - int *bla (https://www.delphipraxis.net/44590-unterschied-int%2A-bla-int-%2Abla.html)

Motzi 21. Apr 2005 10:30


Unterschied: int* bla - int *bla
 
Hi,

vielleicht eine doofe Frage, aber gibt es einen semantischen Unterschied zwischen:
Code:
int* bla;
int *bla;
??

Gruß, Motzi

NicoDE 21. Apr 2005 10:37

Re: Unterschied: int* bla - int *bla
 
Nope. nur um der Lesbarkeit willen...

Motzi 21. Apr 2005 10:56

Re: Unterschied: int* bla - int *bla
 
Gut, hab ich mir auch gedacht.. aber in einer alten Testangabe der Lehrveranstaltung "Systemnahes Programmieren" (die ich dieses Semester mach) findet sich nämlich diese Angabe:
Zitat:

Erklären sie den semantischen Unterschied der beiden folgenden Deklarationen
Code:
/* 1. Art */
int   *counter, start;

/* 2. Art */
int*   counter, start;


sakura 21. Apr 2005 10:59

Re: Unterschied: int* bla - int *bla
 
Hier würde ich sagen, dass im ersten Beispiel nur counter ein Pointer ist (Direktbezug). Im zweiten Beispiel sind beide Variablen ein Pointer, da das Sternchen sich auf den Typ bezieht.

...:cat:...

P.S.: Keine Garantie :mrgreen:

alcaeus 21. Apr 2005 11:03

Re: Unterschied: int* bla - int *bla
 
Soviel ich weiss sind in beiden Beispielen beide Variablen Pointer. Der * bezieht sich nicht auf die Variable, sondern auf den Typ. Wenn ich schreibe
Code:
int a, b;
Dann sind beide Variablen Integer. Bei
Code:
int* a, b;
sind beide Variablen Pointer, genau wie bei
Code:
int *a, b;
Wie gesagt, der Stern bezieht sich auf den Typ, nicht auf die Variable, und bei der Deklaration von mehreren Variablen in einer Zeile haben alle denselben Typ.
(Das ist meine Ansicht der Dinge, bzw. das, was von den paar C-Stunden haengengeblieben ist. Ich lass mich gerne belehren ;))

Greetz
alcaeus

Motzi 21. Apr 2005 11:03

Re: Unterschied: int* bla - int *bla
 
Das wär natürlich eine Möglichkeit..

Jemand hier, der eine Garantie für diese Erklärung geben kann? :mrgreen:

Basilikum 21. Apr 2005 11:24

Re: Unterschied: int* bla - int *bla
 
der Stern bezieht sich nur auf die 1. Variable:
Code:
int* a,b;
a = (int*)malloc(4);
*a = 1;
*b = 1; // Compiler (VC++): Zeigeroperation ungültig (egal ob int* a,b oder int *a,b, jedoch ok bei int *a,*b)
(int *a und int* a zu unterscheiden wäre eh unsinnig, da auch int*a gültig ist)

Oxmyx 21. Apr 2005 11:34

Re: Unterschied: int* bla - int *bla
 
Es ist beides absolut das selbe. Aus diesem Grund sollte man auch immer typedef anstatt define zur Typdefinition verwenden. Denn sonst kann folgendes passieren:
Code:
#define PInt int*;
PInt a, b;
b = 17; <-- Integer-Variable!
a = &b; <-- Zeiger auf Integer!
Edit: Ich meine, es ist das selbe, ob ich
int* a, b;
int *a, b;
int * a, b;
int*a,b;
etc. schreibe.

brechi 21. Apr 2005 12:25

Re: Unterschied: int* bla - int *bla
 
Code:
13:11:11 n3]fu[4s:
int* a, b;
int *a, b;

kurze frage: ist bei 2) nur die variable a nen pointer? oder ist beides das selbe
13:11:37 System: beides das selbe, immer ist nur a pointer
13:12:00 n3]fu[4s: hm beim 1. ist das * hinter int, müssten doch a und b pointer sein?
13:12:16 System: ne, das * bindet an die variabeln
13:12:26 System: also mußt du int *a,*b; schreiben
13:12:29 System: wenn du sowas willst
13:12:39 n3]fu[4s: ok danke
13:12:59 System: dem compiler stört es nicht, wenn * am int direkt steht, aber es gehört eben dennoch zum a
13:13:36 System: sowas kannst du natürlich auch umgehen
13:13:38 n3]fu[4s: ok dachte wenn ichs dahinter mach bezieht sichs auf alle variablen und bei nem a nur auf die eine
13:13:45 System: zb mit typedef int* intpointer;
13:13:48 n3]fu[4s: wie kann man denn machen das alles pointer sind?
13:13:49 System: intpointer a,b;
13:14:02 System: dann weiß man immer was man hat
13:14:06 System: oder die komischen *
13:14:36 System: ne, leerzeichen und solche dinge haben in c keine bedeutung, die sachen also so näher ran zu machen ändert nichts
13:14:56 System: oder=ohne
von jemanden der es wissen sollte (kanns leider nicht testen)

Motzi 21. Apr 2005 12:29

Re: Unterschied: int* bla - int *bla
 
Ok.. danke..! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz