Servus!

Wenn wir schon dabei sind: was ist eigentlich der Unterschied zwischen diesen beiden Varianten?

a) pointer declaration / ohne &
Code:
void blubb(object *o)
{
    printf("hello %s", o->irgendwas);
}

[...]

object *o = object_new();
blubb(o);
a) pointer declaration / ohne &
Code:
void blubb(object o)
{
    printf("hello %s", o->irgendwas);
    // nebenbei:
    // bin mir grad nicht sicher, ob das so funktioniert
    // oder ob man o hier gar nicht über den -> ansprechen kann
}

[...]

object o;
object_new(&o);
blubb(&o);
Also zunächst: welche Variante ist üblicher? Wann nimmt man welche? Ich hab' den Eindruck, dass ich bei Lib1 zu Variante a gezwungen werden, von Lib2 aber zu Variante b. Jetzt bin ich verwirrt, welche ich in meinem Code benutzen sollte.

Naja und falls die Sache über dem Kommentar in Variante b nicht klappt, also wenn ich dort o nicht über -> ansprechen kann, dann stellt sich mir die Frage: wie mach ich das hier am geschicktesten? Klar könnte ich mir so behelfen:
Code:
object *o_pointer = &o;
printf("hello %s", o_pointer->irgendwas);
Aber das wäre ja wohl quatsch ...oder?