title: If char *ptr[10]={"ram","try"} then what is the difference between ptr ,*ptr , *ptr[0] , ptr[0] if all given four types used in printf function
body: <pre><code>#include &lt;stdio.h&gt;
  
  //Compiler version gcc  6.3.0
  
  int main()
  {
    char *ptr[10]={&quot;ram&quot;,&quot;try&quot;};
    printf(&quot;%s \n&quot;,ptr);   // prints neither string nor character (may be address)(why ?)
    printf(&quot;%s \n&quot;,*ptr);  // prints string (why ?)
    printf(&quot;%c \n&quot;,*ptr[0]);   // prints character i.e. r ( why ?)
    printf(&quot;%s \n&quot;,ptr[0]);   // prints string (understandable)
    return 0;
  }
  </code></pre>
  <p>Why ptr doesn't print <strong>ram</strong> ? and why *ptr[0] doesn't print string ?</p>