title: Some basic questions about pointers in C and pointer size
body: <p>In below C code using <a href="https://www.onlinegdb.com/online_c_compiler" rel="nofollow noreferrer">this</a> online compiler, when I increase the pointer address by one, the actual address increases by four. It is because the data type is int.</p>
  <pre><code>#include &lt;stdio.h&gt;
  
  int main()
  {
      int my_array[3] = {0, 1, 2};
      int* p_array = my_array;
      
      printf(&quot;%p \n&quot;, p_array);
      
      p_array = ++p_array;
      
      printf(&quot;%p \n&quot;, p_array);
  
      return 0;
  }
  </code></pre>
  <p>Output after compilation:</p>
  <pre><code>0x7ffeb9ba5814 
  0x7ffeb9ba5818
  </code></pre>
  <p>I have two questions:</p>
  <ol>
  <li><p>Is it possible to directly access/point to the single byte at the address 0x7ffeb9ba5815 using pointer? (not by using bitwise operations)</p>
  </li>
  <li><p>How come the addresses pointers hold in the above case are 6-byte such as 0x7ffeb9ba5818? (I though addresses are either 4 or 8 bytes)</p>
  </li>
  </ol>