#include struct Dummy { int a, b; }; void foo(struct Dummy dummy) { dummy.a = 12; dummy.b = 34; } void bar(struct Dummy *dummy) { dummy->a = 12; // indirect member access dummy->b = 34; // indirect member access } int main(void) { struct Dummy d = { 1, 2 }; foo(d); printf("After 'foo(d)': d.a = %d, d.b = %d\n", d.a, d.b); bar(&d); printf("After 'foo(d)': d.a = %d, d.b = %d\n", d.a, d.b); }