title: dictionary/map/key-value pairs data structure in C
body: <p>How does one construct and access a set of key-value pairs in C? To use a silly simple example, let's say I want to create a table which translates between an integer and its square root.</p>
  
  <p>If I were writing javascript, I could just do this:</p>
  
  <pre><code>var squareRoots = {
     4: 2,
     9: 3,
     16: 4,
     25: 5
  }
  </code></pre>
  
  <p>and then access them like:</p>
  
  <pre><code>var squareRootOf25 = squareRoots[5]
  </code></pre>
  
  <p>How do I do this in C? What if I want to use one type of enum as the key and another type of enum as the value?</p>