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);
{
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);
{
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 →