「やさしいC」p58・・・・・変数を初期化する。

たとえば、
int num;
num = 3; これは「変数の宣言」と「値の代入」ですが、

int num = 3; これは「変数の初期化」です。

両者は同じことのようですが、内部的には違うとききました。
どのような違いがあるのでしょうか。