title: Passing structure as argument in C function
body: <pre><code>typedef struct { int b, p; } A;
  void f(A c);
  int main()
  {
    int i;
    A a = {1,2};
    f(a);
    printf(&quot;%d,%d\n&quot;,a.b,a.p);
    return 0;
  }
  void f(A c)
  {
    int j;
    c.b += 1;
    c.p += 2;
  }
  </code></pre>
  <p>In the following code, why is it that a.b and a.p are still 1 and 2 even after being passed through f(a), which should change them to 2 and 3?</p>