title: Conversion between uint8 and char in C
body: <p>I have an API that implements a writing operation to EEPROM. Here is its declaration:</p>
  
  <pre><code>CYBLE_API_RESULT_T CyBle_StoreAppData (uint8 * srcBuff, const uint8 destAddr[], uint32 buffLen, uint8 isForceWrite);
  </code></pre>
  
  <p>It is working well when I call this function and send an array parameter to <code>srcBuff</code> which has been declared as <code>uint8</code> type. </p>
  
  <p>The problem is, I need to send <code>char</code> array pointer to it. I was thinking that <code>char</code> is already a <code>uint8</code>, but I get a compiler warning if I send a <code>char</code> array pointer to that function instead of <code>uint8</code>. Why can't I use <code>char</code> instead of <code>uint8</code> ? Here are 2 examples of calling that function:</p>
  
  <pre><code>static const uint8      datastack_ROM[dedicatedRomSize] = {0};
  uint8                   Container_ID[10];
  char                    Prefix[10];
  
  //Call the function with Container_ID which has been declared as uint8. This is working.
  CyBle_StoreAppData(Container_ID,datastack_ROM,10,0);
  
  //Call the function with Prefix which has been declared as char. This is NOT working.
  CyBle_StoreAppData(Prefix,datastack_ROM,10,0);
  </code></pre>
  
  <p>Here is the warning for the second call:</p>
  
  <p><code>passing char[10] to parameter of type 'uint8 *' converts between pointers to integer types with different sign.</code></p>
  
  <p>Aren't <code>char</code> and <code>uint8</code> same?</p>