title: Const correctness in C vs C++
body: <p>I understand what const correctness means and my question is not about what const correctness is. So I am not expecting an explanation or C++-FAQ links for that.</p>
  
  <p>My questions are:</p>
  
  <ul>
  <li><strong>What are the semantic differences between <code>const</code> in C and <code>const</code> in C++?</strong> and</li>
  <li><strong>What is the reason for the difference?</strong>      </li>
  </ul>
  
  <p>Quotes from the respective standards which make the differences clear would be nice to have.</p>
  
  <p>I regularly switch between C and C++ and I would like to know the important points that one should keep in mind while doing so.</p>
  
  <p>I don't seem to remember the reason for these (special thanks if you can provide a reasoning) but from the top of my mind, I can remember:</p>
  
  <ul>
  <li>const variables in C++ have internal linkage by default, while in C they have default external linkage;</li>
  <li>const objects can be used as compile-time values in C++, but cannot be used as compile-time values in C;</li>
  <li>Pointers to string literals must be an <code>char const*</code> in C++ but in C it can be <code>char*</code>.</li>
  </ul>
  
  <p>What am I missing?</p>