C: Adresse eine Strukturkomponente

Hallo,

wie kann ich die Adresse einer Strukturkomponente herausbekommen?

Beispiel:

struct mystruct
{
 int test1;
 int test2;
} dummy;

Ich möchte die Adresse von

dummy.test1

beim Aufruf einer Funktion übergeben.

Wenn ich folgendes hätte:

int test1;

wäre der Aufruf so:

void myfunc (\*int);
[...]

myfunc(&test1);

Aber wie mache ich das bei dem

dummy.test1?

Danke für jeden Hinweis,
Crypto.

Hi,

void myfunc (*int);
[…]

myfunc(&test1);

Aber wie mache ich das bei dem

dummy.test1?

&dummy.test1

liefert einen Pointer auf int.

Die Signatur von myfunc muesste dann

void myfunc(int* p)

sein.

Gruss
norsemanna

Hi,

&dummy.test1

liefert einen Pointer auf int.

Die Signatur von myfunc muesste dann

void myfunc(int* p)

sein.

Gruss
norsemanna

Hallo,

es hat bestens funktioniert, vielen Dank.

Gruß,
Crypto.

Hallo norsemanna !

Deine Aussage ist völlig richtig, trotzdem empfehle ich bei solchen Konstruktionen immer Klammern zu setzen um die oft unklaren Bindungsgrenzen zu verdeutlichen bzw. zu setzen.
Es ist ein grosser Unterschied ob der Compiler hier &(dummy.test1) oder (&dummy).test1 interpretiert.
In diesem speziellen Fall ist es zwar eh eindeutig (bzw. das zweitere würde ja eine Sysntaxfehler liefern), aber schon bei &dummy->test1 wäre es nicht mehr so eindeutig, da wäre sowohl &(dummy->test1) als auch (&dummy)->test1 möglich und man müsste im Manual nachschauen was denn nun genommen wird.

mfg
Christof