C-Programmierung

Strukturzeigerparameter

Strukturparameter | | Eigene Datentypen

Zur Vermeidung überflüssiger Kopien verwendet man Strukturzeiger als Funktionsparameter (Call-By-Reference):

bool compare_datum(const struct datum *d1, const struct datum *d2)
{
   return(d1->year>d2->year &&
          d1->month>d2->month &&
          d1->day>d2->day);
}

struct datum d1={1,1,1970}, d2={1,1,1971};

bool later = compare_datum(&d1,&d2);

Call-By-Reference mit dem &-Operator:

bool compare_datum(const struct datum &d1, const struct datum &d2)
{
   return(d1.year>d2.year &&
          d1.month>d2.month &&
          d1.day>d2.day);
}

struct datum d1={1,1,1970}, d2={1,1,1971};

bool later = compare_datum(d1,d2);

Intern werden die &-Parameter als Zeiger übergeben (Schnelligkeit), nach außen hin treten sie aber wie lokale Kopien (. Operator) auf, sind es aber nicht.

Dies erspart insbesondere den lästigen Adressoperator im Funktionsaufruf!

Strukturparameter | | Eigene Datentypen

Options: