#include #include struct Point { float x, y; }; struct AlternativePoint { float coords[2]; }; void InitializePoint_Bad(struct Point p) { p.x = 1.0; p.y = 2.0; } void InitializePointArray_Bad(struct Point a[]) { struct Point p[] = {{2.0, 6.0}, {3.0, 7.0}}; a = p; } void PrintAlternativePoint(struct AlternativePoint p) { printf("ap: {%f,%f} @ %p\n", p.coords[0], p.coords[1], &p.coords); } int main(int argc, char **argv) { struct Point p = {0.0, 2.0}; printf("p: {%f,%f}\n", p.x, p.y); InitializePoint_Bad(p); printf("p: {%f,%f}\n\n", p.x, p.y); struct Point a[] = {{1.0, 3.0}, {5.0, 7.0}}; printf("a[0]:{%f,%f}, a[1]:{%f, %f}\n", a[0].x, a[0].y, a[1].x, a[1].y); InitializePointArray_Bad(a); printf("a[0]:{%f,%f}, a[1]:{%f, %f}\n\n", a[0].x, a[0].y, a[1].x, a[1].y); struct AlternativePoint ap = {{10.0, 100.0}}; printf("ap: {%f,%f} @ %p\n", ap.coords[0], ap.coords[1], &ap.coords[0]); PrintAlternativePoint(ap); return EXIT_SUCCESS; }