アロー演算子の使い方で思ったこと(C言語)

構造体へのポインタを引数に使う場合を考える。
ポイントは、

struct Car car1; //構造体の宣言
void show(Car *pC)  //構造体へのポインタを引数に持つ関数
{  
car1->num; //アロー演算子で構造体へのポインタから構造体のメンバ変数にアクセス
car2->gas;
}

サンプルコード

#include <stdio.h>

typedef struct Car{
    int num;
    double gas;
}Car;

void show(Car *pC);

int main(void){
    Car car1 = {0,0.0};
    printf("ナンバーを入力してください。\n");
    scanf("%d", &car1.num);
    printf("ガソリン量を入力してください。\n");
    scanf("%lf", &car1.gas);
    show(&car1);
    return 0;
}

void show(Car *pC){
    printf("車のナンバーは%d,ガソリン量は%fです。\n",pC->num,pC->gas);
}

出力結果

ナンバーを入力してください。
12
ガソリン量を入力してください。
3.4
車のナンバーは12,ガソリン量は3.400000です。

このコードを見てて思ったのだが、

printf("車のナンバーは%d,ガソリン量は%fです。\n",pC->num,pC->gas);

を、次のように書き換えられないのだろうかということ。

printf("車のナンバーは%d,ガソリン量は%fです。\n",*pC.num,*pC.gas);

pCは構造体Carへのポインタより、*pCは構造体pCのインスタンスを指すはず。
そうするとアロー演算子ではなく、通常通りドット演算子でメンバ変数に
アクセスできると考えた。

実行するとxcodeが次のようなエラーを吐いた。

Member type 'Car *' is a pointer, maybe you meant to use '->'?
Indirection requires pointer operand('int' invalid).

そういう風に規定されてるから仕方ないのかな。