title: why doesn't strlen (..) expect const char* const str instead of const char*
body: <p>I was reading though this: <a href="https://stackoverflow.com/questions/4949254/const-char-const-versus-const-char">const char * const versus const char *?</a></p>
  
  <p>in <code>string.h</code>, <a href="http://www.cplusplus.com/reference/clibrary/cstring/strlen/" rel="nofollow noreferrer">strlen</a> is defined as:</p>
  
  <pre><code>size_t strlen ( const char * str );
  </code></pre>
  
  <p>If I understand this correctly, strlen expects a pointer to a char that is const. Shouldn't it be:</p>
  
  <pre><code>size_t strlen ( const char* const str );
  </code></pre>
  
  <p>This would make sure that strlen cannot modify the pointer to point to a different pointer ?</p>
  
  <p>Or, is this the case:</p>
  
  <p>Since str pointer will be passed by value to strlen, any changes to this pointer in the function will not change the source pointer, and hence it's okay..</p>
  
  <p>??</p>