お願いします
次のプログラムにおいて
int ######; // 変数、ポインタの宣言

########## // int型変数 e に「値」 30 を代入
########## // 変数e の「アドレス」を ポインタpointer_e に代入
######### // ポインタpointer_e が指し示すアドレスのメモリ内の「値」を 変数gに代入り
と処理したいとする。
各変数を適切に宣言し(#####を埋めよ)、e, pointer_e, g のアドレスと値の両方をprintf("### の[データ or アドレス]\n",###) 文により表示させるプログラムを完成させて実行せよ。

#include <stdio.h>

int main(void)
{
int ########## // 変数、ポインタの宣言
int e = #####; // int型変数 e に「値」 30 を代入
int e = ########## // 変数e の「アドレス」を ポインタ pointer_e に代入
char buffer[30]; // ポインタ pointer_e が指し示すアドレスのメモリ内の「値」を 変数gに代入
printf(##########);
printf(##########);
printf(##########);
printf(##########);
printf(##########);
printf(##########);
return (0);
}