title: C: Are structs implemented as pointers?
body: <p>Okay, I've searched around the other questions with similar names here, but no dice.    </p>
  
  <p>My question: Say we have a struct and an array of said struct:    </p>
  
  <pre><code>typedef struct derp {
      int herp;
      double schlerp;
  } struct_t;
  struct_t* dynamic_array = (struct_t*)calloc(my_array_size, sizeof(struct_t));
  </code></pre>
  
  <p>Are structs implemented as pointers? Meaning, how does the following behave?</p>
  
  <pre><code>struct_t me;
  me = dynamic_array[complicated calculation best not repeated];
  me.herp += 2; //pretend it's properly initialized
  me.schlerp *= 2; //ditto
  </code></pre>
  
  <p>Would the entry in that array show the changes to the struct members? I.e. is the <code>me</code> a deep copy of the array's struct's members, or merely a "pointer" of somesort to the same members as pointed to by the array?</p>
  
  <p>I apologize if the question isn't making much sense, I'm trying to word it in more ways than one to minimize miscommunication. (Here's hoping that doesn't backfire :P)</p>