何でポインタとして宣言したものに、アドレス以外の値を代入しようなどと考えるのか?
ポインタはアドレスを指し示す以外に能が無い。間接参照は*演算子のおかげ。
整数を格納したいなら、そのポインタの指すアドレスを先頭としたメモリを確保しろ。
(エラー処理は省略)

// 以下はNG
int main(int argc, char **argv)
{
int *i; // この時点ではポインタiの指すメモリアドレスは不定

*i = 123; // iの指す不定アドレスのメモリ領域に整数123を代入しようとしている
printf("%d", *i);

return 0;
}

// 以下はOK
int main(int argc, char **argv)
{
int *i = malloc(sizeof(int)); // ポインタiにはmallocで確保されたメモリ領域の先頭アドレスが入る

*i = 123; // iの指すintバイトのメモリ領域に123を代入
printf("%d", *i);

free(i);
return 0;
}