C言語でマイコンからLCDに文字列を出力するプログラムで

void PutString(char* point);
void PutChar(char data);

main(){
  PutString("Hello,world!");
}

void PutString(char* point){
  while(*point){
  PutChar(*point);
  ++point;
  }
}

void PutChar(char data){
  //LCDに1文字出力し、カーソルをインクリメントする
}

上記のプログラムが正常に動くのですが
PutString("Hello,world!");
文字列のリテラルとchar型ポインタは型があわないはずなのに
なぜこの行がエラーにならず正常に動のでしょうか?
マイコンというよりCの言語仕様の話だと考えたのでこっちに質問しました。