Struktuuride pesastamisel on oluline, et kompilaator oleks struktuuri liikmeka kasutatav andmetüüp juba “tuttav”. Seda saab teha kas lisades koodi täieliku struktuuri deklaratsiooni (nagu on tehtud järgnevas näites) või pakkudes struktuuri deklratsiooni (forward declaration), eeldusel, struktuuri sisu kirjeldus eksisteerib.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
/** * File: car_return.c * Author: Risto Heinsar * Created: 02.02.2015 * Modified 31.01.2025 * * Description: This is an example code showing creation of a nested struct */ #include <stdio.h> #include <string.h> #define REG_LEN 8 #define FIELD_LEN 32 struct Vehicle { char make[FIELD_LEN]; char model[FIELD_LEN]; }; struct CarRegistryEntry { char regNum[REG_LEN]; char regCity[FIELD_LEN]; char owner[FIELD_LEN]; int year; struct Vehicle car; }; void PrintCar(struct CarRegistryEntry motor); void PrintCarUsingPtr(struct CarRegistryEntry *car); int main(void) { struct CarRegistryEntry indestructibleHilux; strcpy(indestructibleHilux.regNum,"E473CJN"); strcpy(indestructibleHilux.regCity,"London"); strcpy(indestructibleHilux.owner,"The Stig"); indestructibleHilux.year = 1988; strcpy(indestructibleHilux.car.make,"Toyota"); strcpy(indestructibleHilux.car.model,"Hilux"); PrintCar(indestructibleHilux); PrintCarUsingPtr(&indestructibleHilux); return 0; } /** * Description: Outputs the details of an automobile using . notation * * Parameters: motor, vehicle structure with the details of a car * * Return: none */ void PrintCar(struct CarRegistryEntry motor) { printf("%s %s, reg number %s, belongs to %s and is registered in %s\n", motor.car.make, motor.car.model, motor.regNum, motor.owner, motor.regCity); } /** * Description: Outputs the details of an automobile using -> notation * * Parameters: motor, vehicle structure with the details of a car * * Return: none */ void PrintCarUsingPtr(struct CarRegistryEntry *motor) { printf("%s %s, reg number %s, belongs to %s and is registered in %s\n", motor->car.make, motor->car.model, motor->regNum, motor->owner, motor->regCity); } |