/* CSE 333 Su12 Lecture 5 demo: structarg.c */ /* Gribble/Perkins */ /* Structure call-by-value vs using pointers for call-by-reference */ #include // Point is a (struct point_st) // PointPtr is a (struct point_st *) typedef struct point_st { int x, y; } Point, *PointPtr; // call by value - doesn't affect argument void DoubleXBroken(Point p) { p.x *= 2; } // call by reference void DoubleXWorks(PointPtr p) { p->x *= 2; } int main(int argc, char **argv) { Point a = {1,1}; DoubleXBroken(a); printf("(%d,%d)\n", a.x, a.y); DoubleXWorks(&a); printf("(%d,%d)\n", a.x, a.y); return 0; }