title: C Struct & Strcpy, dot operator does it resolve into a pointer
body: <p>suppose i have something like this</p>
  
  <pre><code>typedef char string[21]    
  
  struct planet_s
  {
      string name,orbits;
      float distance;
      string discoverer;
      int yeardiscovered;
  }one_planet;
  </code></pre>
  
  <p>next i need to initialize some information about the planet therefore my text book says</p>
  
  <pre><code>strcpy(one_planet.name, "Earth");         ?confused with these
  strcpy(one_planet.orbits, "Sun");         ?
  one_planet.distance = 150;
  one_planet.mass = 6.00e+24;
  strcpy(one_planet.discoverer, "me");     ?
  one_planet.yeardiscovered = 1000;
  </code></pre>
  
  <p>my Confusion arises in the <code>strcpy</code>,let me put things in point form </p>
  
  <p><code>Strcpy</code> needs a pointer to a string as its first argument</p>
  
  <p>does <code>one_planet.name</code> resolve into a pointer to the strcuts name array(does the dot operator resolve into an address)?</p>
  
  <p>how come <code>one_planet.distance =150</code> does not resolve into an address since we are assign it its value straight away? this is what i been taught, one_planet.distance directly access the struct element and assigns it. my confusion is with the strcpy, since it needs an address to store a string?</p>
  
  <p>hope you understand where my confusion comes form thanks.</p>