title: How is the string literal argument interpreted when passed as parameter in function?
body: <p>I need help to grasp something. Currently I am testing the code on microcontroller platform with small amount of memory (ROM(FLASH), RAM).
  This is the code</p>
  
  <pre><code>void print(const char * c)
  {
     printf("%#4x, ",c);
     printf("%s\n",c);
  }
  </code></pre>
  
  <p>This is the function call</p>
  
  <pre><code>print("Riko");
  </code></pre>
  
  <p>And the output is:  <strong>0x5C4C, Riko</strong></p>
  
  <p>The memory address 0x5C4C resides in FLASH (MAIN CODE MEMORY) so the literal string <code>"Riko"</code> must also reside in that memory segment? My question is: When we pass <code>"Riko"</code> as argument to the function <code>print</code>, does it actually mean that we pass the address of the first character of the string <code>"Riko"</code> or <code>((const char*) 0x5C4C)</code> as argument to the function <code>print</code>? Thanks a lot...</p>